簡體   English   中英

C 宏 ## 不適用於函數定義

[英]C macro ## doesn't work for function definition

#define FUNCXY(x,y) void FUNC_##x_##y(int){}
#define FUNCXYGOOD(x,y) void FUNCGOOD_##x##_##y(int){}
FUNCXY(2, 1) //get expanded to void FUNC_x_1(int){}
FUNCXYGOOD(2, 1) //get expanded to void FUNCGOOD_2_1(int){}

為什么 FUNCXY 不起作用但 FUNCXYGOOD 起作用,這就是這背后的 C 規則?

答案很簡單。 沒有x_宏參數。 下划線是宏標記的一部分。 下划線與任何其他有效標記字符相同

其他情況下,像這樣的宏是不可能的:

#define FOO(x, xa, xb)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM