Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在#define子句中,如何使预处理器替换变量名中的参数?_C_Macros_C Preprocessor - Fatal编程技术网

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;