是否有可能以某种方式声明这样的#define语句?
#define #Name# struct->name
我收到错误“错误:宏名称必须是标识符”,我知道这与#符号有关。是否有允许#符号的解决方法?
答案 0 :(得分:7)
没有。宏的名称必须是标识符,#
不能出现在标识符中。
答案 1 :(得分:0)
宏名称必须是标识符,表示:
但更重要的问题是,我认为无论如何都不会做你想要的。如果#define #Name# struct->name
被接受,那并不意味着#foo#
会变成struct->foo
(我认为这就是你想要的。如果我错了,你只是想让它工作#Name#
然后只需执行类似XNameX
的操作。)它只适用于确切的文字#Name#
。相反,你想做一个带有如下参数的宏:
#define X(name) struct->name
这会将X(foo)
转换为struct->foo
。