在#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
.
粘贴在一起
我有以下代码:
#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
.