文件包含(#include)
宏定义(#define)
第一种情况:
#ifdef _XXXX
...程序段1...
#else
..程序段2...
#endif
这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。
第二种情况:
#ifndef,表示的是if not def。所以和#ifdef相反
第三种情况:
#if 常量
程序段1
#else
程序段2
#endif
1.利用#ifdef/#endif将某程序功能模块
2.防止同一头文件被重复包含
2.在每一个子程序前加上标记,以便追踪程序的运行。
3.避开硬件的限制。
注释性宏,即是否使用它们不影响编译结果,通常定义为空
__cplusplus 如果当前编译器为C++,该值为1。
__DATE__ 当前源码的编译日期,格式为Mmm dd yyyy。
__TIME__ 当前源码的编译时间,格式为hh:mm:ss。
__TIMESTAMP__ 当前源码文件最后被修改的日期和时间,格式为Ddd Mmm Date hh:mm:ss yyyy。
__FILE__ 当前源码文件名。
__LINE__ 当前插入点所在源码的行号。
__FUNCTION__ 当前插入点所在函数名。
__STDC__ 标识是否严格遵循ANSI C标准,编译器选项/Za被设置时该宏定义为1,表示遵循标准。
__VA_ARGS__ 可变参数宏,用来传递可变参数表;该宏并非被所有编译器支持。