在#define子句中,如何使预处理器替换变量名中的参数?
我有以下代码:
#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
粘贴在一起。