C 在#define子句中,如何使预处理器替换变量名中的参数?
我有以下代码:C 在#define子句中,如何使预处理器替换变量名中的参数?,c,macros,c-preprocessor,C,Macros,C Preprocessor,我有以下代码: #define MY_MACRO(PARAM) int PARAM_int; double PARAM_double; [subsequent instructions] 不幸的是,它不起作用,这意味着PARAM在变量名中没有被替换。这是可以解决的吗?参数int被认为是一个单独的标记,与参数不同。您可以将宏定义中的标记与##连接起来: 现在,PARAM将扩展到调用宏时使用的任何对象,然后生成的标记将与\u int一起粘贴,并且\u doublePARAM\u int被认为是一个
#define MY_MACRO(PARAM) int PARAM_int; double PARAM_double; [subsequent instructions]
不幸的是,它不起作用,这意味着PARAM在变量名中没有被替换。这是可以解决的吗?
参数int
被认为是一个单独的标记,与参数
不同。您可以将宏定义中的标记与##
连接起来:
现在,
PARAM
将扩展到调用宏时使用的任何对象,然后生成的标记将与\u int
一起粘贴,并且\u double
PARAM\u int
被认为是一个单独的标记,与PARAM
不同。您可以将宏定义中的标记与##
连接起来:
现在,PARAM
将扩展到调用宏时使用的任何对象,然后生成的标记将与\u int
和\u double
一起粘贴
#define MY_MACRO(PARAM) int PARAM ## _int; double PARAM ## _double;