符号 | 含义 |
---|---|
__FILE__ | 文件名称 |
__LINE__ | 行数 |
__DATE__ | 日期 |
__TIME__ | 时间 |
DEFINE宏替换字符串
在宏中,每一个要被替换的字符串前面加上#,在使用的时候不用加双引号
#define PRINT(FORMAT, VALUE) printf("the value of "#VALUE" is "#FORMAT" ", VALUE);
使用的时候PRINT(%d, x)
即可
即,一个#可以将后面的参数替换,并加上“”
两个#可以将两个Token连接起来,组成一个新的token,常用于创造两个需要区分的变量等。
宏 VS 函数
宏
- 不需要返回
- 支持多种类型的替换
函数
每一次的替换都增加了代码长度
undef
如果需要重新定义,那么上一次的宏定义不许undef掉
命令行宏定义
-Dname=*stuff*
(注意D和name没有空格), 方便对于不同的机器产生不同的宏定义代码。同样,用-Uname可以反宏定义
网友评论