c语言里的宏(翻译) 1
原文见这里
宏,是一小片被命名了的代码段。在程序的其他地方引用该名字时,编译器会自动用宏的内容取代它。宏有两种,它们的不同之处比较多的表现在它们在代码中的样子:Object-like 宏指代 objects, 而function-like宏指代function call。
你可以把任何合法的标识符定义成宏,连c语言的保留字也可以,因为预处理器根本不知道那些字符串是保留字。这个特性在某种场合很有用,比如你想屏蔽掉关键字const因为一些老的编译器不支持const,就可以把const关键字define成空即可。但是也有例外,比如预处理器用到的关键字“defined”,以及c++中的操作符( +,-,*,/,=之类)就不可以定义成宏。
接下来的内容将涉及这些内容
- Object-like 宏
- Function-like 宏
- 宏参数
- 字符化
- 联结
- 可变参数宏
- 预定义宏
- 未定义宏和重复定义宏
- 宏参数里的指定
- 宏陷阱