1.预定义符号:
__FILE__//进行编译的源文件
__LINE__//文件当前的行号
__DATE__//文件被编译的日期
__TIME__//文件被编译的时间
这些预定义符号都是C语言内置的,可用打印方式查看
printf("%s %d\n",__FILE__,__LINE__);
2.#define:
1.定义标识符:
//语法:
#define name stuff
注:在定义的末尾不要加 ' ; '
因为#define是直接把name替换成stuff
2.定义宏:
#define Add(s) (x * x)
注:左边的括号必须与name紧贴,如果出现空白,就会被理解为stuff的一部分
3.#define替换规则
1.在调用宏时,首先对参数进行检查,如果包含由#define定义的符号,就首先替换
2.替换的文本随后被插入到程序中原来文本的位置;对于宏来说,参数名被文本的值替换
3.最后,再次对结果文件进行扫描,若还有任何由#define定义的符号,就重复上述过程
注:宏不能出现递归
4.副作用的宏
例:
x++;//有副作用
x+1;//无副作用