带‘#’号的一般都为预处理
在谈论预处理前,我们应明白
当我们编写完代码时,机器并不能识别
要经过一系列的处理,将其转换为二进制代码
这样机器才能识别
预处理就是在转换的过程中,先处理一遍(如,宏展开,宏替换等)
我们经常使用#include <stdio.h>
它就是典型的宏
它将stdio.h文件的内容添加到你的程序前进行支持
当你添加它进入你的程序时,你就可以使用它所提供的函数
但这里有一个问题,有人会见到以下形式
#include “stdio.h”
两者有一定区别
当使用<>时,机器会先从编译器的库文件夹中寻找
而当使用“”时机器会先从当前文件夹(也就是你的代码所在位置)开始寻找,当找不到时,才会到库文件夹中寻找
由此,我们可以将程序拆分成多份然后放入相同文件夹,然后再用添加头文件的方法将其添加到主程序中
如:
对,我添加的是.c文件
它与.h文件有什么区别呢?
本质上没有
(PS:关于窗口的操作,附图)
(中文版有许多BUG,建议使用英文版,主要是笔者英文实在太渣,无奈选择中文版,反正考完试就卸了)
下面说宏替换
#define a b
它将a全部替换为b
如:
如果接触过单片机的话,这句出现的非常频繁
它还有一个特殊用法,带参替换
有一丝函数的味道
它还可以进行嵌套替换
如:
对于一些条件宏
如
#ifdef(#ifndef)
#else
#endif
和
#if (表达式)
#else
#endif
等,个人认为与条件编译无差(并且现阶段用的非常少),在此不过多赘述
小结:
用替换宏将无符号类型替换
用包含宏将其封装
(参考答案见附件)
(预计还有2-3章,结束C语言)
|