2014-10-08 65 views
2

是否可以在C中放置多個#define預處理器命令?#在C中的一行上定義多個常量

例如,而不是這樣的:

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

只是這樣的:

#define a1, b2, c3 
+4

如果評論不一定是15個字符:否 – user3386109 2014-10-08 06:40:37

+0

@pala,您的評論的第二部分是完全誤導。這不是一個變量。 – 2014-10-08 06:42:28

+0

如果你想要常量:'int a = 1,b = 2,c = 3;' – 2014-10-08 07:02:18

回答

3

號,預處理階段只是文本替換並意味着是簡單的解析。因此,所有的預處理指令

  • 開始上線(後最終空格)與#
  • 端與線
  • 同時
特別

只做一件事情的結束一個通過#define的宏定義會一直延續到該行的末尾,並且預處理階段將無法決定您打算一次聲明多個宏。在你提出宏觀a的內容實際上將, b2, c3這可能不是你想要的:)

2

號根據最新的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開頭的控制行的語法只有一個標識符(不包括標識符列表中的函數類參數)和一個替換列表在換行符之前。

+0

當前C標準是C11,它對應於同一站點的文檔'n1570.pdf'。 – 2014-10-08 06:53:21

+0

@JensGustedt D'oh!謝謝,我會更正答案。 – 2014-10-08 06:54:24