在#define子句中,如何使预处理器替换变量名中的参数?

Sil*_*pur 1 c macros c-preprocessor

我有以下代码:

#define MY_MACRO(PARAM) int PARAM_int; double PARAM_double; [subsequent instructions]
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用,这意味着PARAM不会在变量名称中被替换.这可以解决吗?

Aas*_*set 6

PARAM_int被认为是一个单一的标记,不同于PARAM.您可以使用以下命令在宏定义中连接标记##:

#define MY_MACRO(PARAM) int PARAM ## _int; double PARAM ## _double;
Run Code Online (Sandbox Code Playgroud)

现在,PARAM将扩展为您调用宏的任何内容,然后生成的令牌将与_int和粘贴在一起_double.