#在C语言的一行中定义多个常量

Pyr*_*ons 3 c c-preprocessor

是否可以#define在C中将几个预处理器命令放在一起?

例如,代替此:

#define a 1
#define b 2
#define c 3 ...
Run Code Online (Sandbox Code Playgroud)

只是这个:

#define a1, b2, c3 
Run Code Online (Sandbox Code Playgroud)

Chr*_*ter 6

否。根据最新的 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只有一个标识符(不包括标识符列表中类似函数的参数)并且换行符之前的一个替换列表。


Jen*_*edt 5

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

  • 从一行开始(最后是空格) #
  • 以行结尾
  • 一次只做一件事

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