预处理器(未整理)

来源:互联网 发布:程序员自我评定怎么写 编辑:程序博客网 时间:2024/06/05 07:13

带参数的宏

带参数的宏(也称为函数式宏)的定义有如下格式:
#define 标识符(x1, x2, x3,......,xn) 替换列表

使用带参数的宏替代真正的函数有两个优点:

  • 程序可能会稍微快些
  • 宏更“通用”
带参数的宏也有一些缺点:
  • 编译后的代码通常会变大
  • 宏参数没有类型检查
  • 无法用指针指向一个宏
  • 宏可能会不止一次地计算它的参数
#运算符将宏的一个参数转换为字符串字面量。它仅允许出现在带参数的宏的替换列表中。
##运算符可以将两个记号(如标识符)“粘合”在一起,称为一个新记号。

宏可以使用#undef指令“取消”定义。取消现有宏的定义,以便重新给出新的定义。

对于在一个宏定义中哪里要加圆括号有两条规则要遵守:

  • 首先,如果宏的替换列表中有运算符,那么始终要将替换列表放在括号中
  • 其次,如果宏有参数,每个参数每次在替换列表中出现时都要放在圆括号中



0 0
原创粉丝点击