1.预定义符号
C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的
__FILE__ //进行编译的源文件
__LINE__ //文件当前的行号
__DATE__ //文件被编译的日期
__TIME__ //文件被编译的时间
__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义
2.#define定义常量
#define name stuff
建议不要在define定义标识符时,在最后加上;
这要容易导致替换时后面出现额外的;
3.#define定义宏
#define机制包括一个规定,允许把参数替换到文本中,这种实现通常成为宏
#define name( parament-list ) stuff
其中的parament-list是一个由逗号隔开的符号表,它们可能出现在stuff中
4.宏函数的对比
宏通常被应用于执行简单的运算
1.宏比函数在程序的规模和速度方面更胜一筹
2.宏的参数时类型无关的
和函数比宏的劣势:
1.每次使用宏时,宏定义的代码将插入到程序中,除非宏比较短,否则可能会大幅度增加程序的长度
2.宏没办法调试
3.宏类型无关,不够严谨
4.宏可能会带来运算符优先级的问题,导致程序容易出现错误
5.#和##
#运算符所执行的操作可以理解为"字符串化"
##可以把位于它两边的符号合成一个符号,被称为记号粘合
6.命名约定
把宏名全部大写
函数名不要全部大写
7.#undef
这条指令用于移除一个宏定义
#undef NAME