引言
C预处理器(C Preperocessor cpp)主要处理代码中的预处理命令,在编译器之前执行---简单的文本替换,替换后会生成对应的.i
文件
重要的预处理命令:---嵌入式开发常用
#include | 导入库文件 |
#define | 定义宏---定义常量,字符串,数据类型的别名 |
#undef | 取消已定义的宏 |
#ifdef | 如果宏已经定义,返回真 |
#ifndef | 如果宏没有定义,返回真 |
#if | 如果给定条件为真,则编译下面的代码 |
#else | 和#if 搭配使用 |
#elif | 和#if 配套使用 |
#endif | 结束#if...#elif...#else 条件编译块 |
#error | 遇到标准错误(stderr )时,输出错误消息 |
#pragma | 使用标准化方法向编译器发布特殊的命令到编译器中---做出特殊操作 |
预定义宏
在ANSI C中定义,可以直接使用
DATE | 当前日期,格式:MMM DD YYYY |
TIME | 当前时间,格式:HH:MM:SS |
FILE | 包含当前文件名,字符串常量 |
LINE | 包含当前行号,十进制常量 |
STDC | 编译器以ANSI标准编译时,定义为1 |
预处理器运算符
\
---宏延续运算符---可以在下一行写入宏的内容
#
---字符串常量化运算符---将宏的参数转化为字符串常量
##
---标记粘贴运算符---在宏定义中两个独立的标记被合并为一个标记---qwq##233;//将qwq和233合为一个标记符
参数化的宏
可以将一个简单的函数作为一个宏,不过要注意运算的顺序
ex
#define Max(x,y) ((x)>(y)?(x):(y));