c语言里的宏(翻译) 1

原文见这里 

宏,是一小片被命名了的代码段。在程序的其他地方引用该名字时,编译器会自动用宏的内容取代它。宏有两种,它们的不同之处比较多的表现在它们在代码中的样子:Object-like 宏指代 objects, 而function-like宏指代function call。

你可以把任何合法的标识符定义成宏,连c语言的保留字也可以,因为预处理器根本不知道那些字符串是保留字。这个特性在某种场合很有用,比如你想屏蔽掉关键字const因为一些老的编译器不支持const,就可以把const关键字define成空即可。但是也有例外,比如预处理器用到的关键字“defined”,以及c++中的操作符( +,-,*,/,=之类)就不可以定义成宏。

接下来的内容将涉及这些内容

  1. Object-like 宏
  2. Function-like 宏
  3. 宏参数
  4. 字符化
  5. 联结
  6. 可变参数宏
  7. 预定义宏
  8. 未定义宏和重复定义宏
  9. 宏参数里的指定
  10. 宏陷阱
posted @ 2008-10-15 19:57  gussing  阅读(602)  评论(0编辑  收藏  举报