C预处理器,C Preprocessor简称CPP。C预处理器不是编译器的一部分,它是一个单独的文本替换工具,指示编译器在实际编译之前需要完成的工作。
常用的预处理器指令
- #include
- 包含头文件
- #define
- 宏定义
- #undef
- 取消宏定义
- #ifdef
- 如果定义
- #ifndef
- 如果没有定义
- #if
- 如果
- #else
- 否则
- #elif
- 否则如果
- #endif
- 结束判断
- #error
- 当遇到标准错误时,输出错误信息
- #pragram
- 使用标准化方法,向编译器发布特殊的指令到编译器中
ANSI C预定义宏
- 宏延续运算符
-
' ',定义多行的宏定义
#define MAX(a, b) a > b ? a : b
-
- 字符串常量化运算符
-
‘#’,将一个宏的参数转换成字符串常量
#define SUM(a, b) printf(#a " + " #b " = %d ", (a) + (b))
-
- 标记粘贴运算符
-
‘##’,在宏定义中将两个独立的标记合并成一个标记
// 定义 #define VALUE(v) printf("a%d = %d ", v, a##v) // 使用 int a1 = 3; VALUE(1);
-
- defined() 运算符
-
判断一个标识符是否用#define定义过
#if !defined(DEBUG) // TODO: #endif
-
- 常见的预定义宏
- DATE
-
当前日期,“MMM DD YYYY”。使用方法:
printf("Date :%s ", __DATE__ );
-
- TIME
-
当前时间,“HH:MM:SS”
printf("Time :%s ", __TIME__ );
-
- FILE
-
当前文件名
printf("File :%s ", __FILE__ );
-
- LINE
-
当前行号
printf("LINE :%s ", __LINE__ );
-
- STDC
-
当编译器为ANSI标准编译时,则定义为1
printf("STDC :%s ", __STDC__ );
-
- DATE