如何在C中定义一个定义?

Eli*_*any 13 c c-preprocessor

是否有可能写一个#define定义了#define

例如:

#define FID_STRS(x) #x
#define FID_STRE(x) FID_STRS(x)
#define FID_DECL(n, v) static int FIDN_##n = v;static const char *FIDS_##n = FID_STRE(v)
Run Code Online (Sandbox Code Playgroud)

但反而:

#define FID_DECL2(n, v) #define FIDN_##n v \
                               FIDS_##n FID_STRE(v)
Run Code Online (Sandbox Code Playgroud)

FID_DECL工作正常,但创建两个静态变量.是否有可能做出FID_DECL2工作并定义两个定义?

Jam*_*lis 15

没有; 预处理一次完成.如果您想要或需要更高级的行为,请考虑使用其他工具预处理源,例如m4.

此外,#在替换列表中(在开头#define FIDN...将被解析为#(stringize)运算符:此运算符的操作数必须是命名的宏参数,而define不是.