#define C中一行上的多个常量

时间:2014-10-08 06:35:33

标签: c c-preprocessor

是否可以将几个#define预处理程序命令放在C?

例如,而不是:

#define a 1
#define b 2
#define c 3 ...

就是这样:

#define a1, b2, c3 

2 个答案:

答案 0 :(得分:5)

不,预处理器阶段只是文本替换,意味着解析起来很简单。因此所有预处理器指令

  • 使用#
  • 开始一行(在最终空格之后)
  • 以行尾结束
  • 一次只做一件事

特别是通过#define的宏定义延伸到行的结尾,并且预处理阶段将无法决定您打算一次声明多个宏。在你提出的语法中,宏a的内容实际上是, b2, c3,这可能不是你想要的:)

答案 1 :(得分:3)

没有。根据最新的C99标准,http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf第146页,以及当前的C11标准,http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf第161页,以#define开头的控制行的语法只有一个标识符(不计算标识符列表中的类似函数的参数)和新行字符之前的一个替换列表。