预处理的使用:
⑴包含头文件 #include
⑵宏定义 #define 替换,不进行语法检查
①常量宏定义:#define 宏名 (宏体) (加括号为防止不进行语法检查而出现的错误)
eg:#define ABC 5+3
printf(""the %d ,ABC*5); //5+3*5 只进行替换,进行语法见检查,一般加括号来防止出现上述问题。
eg:#define ABC (5+3)
②函数宏定义: #define ABC(X) (5+(x)) //X的括号也应该加上,原因同上。
⑶ 条件预处理:
#ifdef #else #endif
eg:
1 #include <stdio.h> 2 3 int main (){ 4 5 #ifdef ABC //检查是否有ABC该宏定义。 有即为真,无为假。 6 printf("sssss"); 7 #endif 8 9 return 0; 10 }
注:有两种方法解决:一为添加宏定义ABC
二为编译时添加-D命令进行处理:gcc -DABC 等同于在文件内声明:#define ABC.
⑷预定义宏
①__FUNCTION__ //函数名
②__LINE__ //行号
③__FILE__ //文件名
eg:
1 #include <stdio.h> 2 3 int main (){ 4 printf("%s,%s,%d ",__FUNCTION__,__FILE__,__LINE__) ; 5 } 6 //输出结果为:main(所在函数名),当前文件名,4(行数)