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

In a #define clause, how to make the preprocessor replace a parameter inside a variable name?

我有以下代码:

#define MY_MACRO(PARAM) int PARAM_int; double PARAM_double; [subsequent instructions]

不幸的是,它不起作用,这意味着变量名称中的 PARAM 没有被替换。这可以通过某种方式解决吗?

PARAM_int 被认为是一个单独的标记,与 PARAM 不同。您可以使用 ##:

连接宏定义中的标记
#define MY_MACRO(PARAM) int PARAM ## _int; double PARAM ## _double;

现在,PARAM 将扩展到您调用宏时使用的任何内容,然后生成的标记将与 _int_double.

粘贴在一起