带#in宏名称的C #define语句

时间:2011-11-26 21:32:04

标签: macros c-preprocessor

是否有可能以某种方式声明这样的#define语句?

    #define #Name# struct->name

我收到错误“错误:宏名称必须是标识符”,我知道这与#符号有关。是否有允许#符号的解决方法?

2 个答案:

答案 0 :(得分:7)

没有。宏的名称必须是标识符,#不能出现在标识符中。

答案 1 :(得分:0)

宏名称必须是标识符,表示:

  1. 必须以字母或下划线开头。
  2. 只能包含字母,数字和下划线。
  3. 但更重要的问题是,我认为无论如何都不会做你想要的。如果#define #Name# struct->name被接受,那并不意味着#foo#会变成struct->foo(我认为这就是你想要的。如果我错了,你只是想让它工作#Name#然后只需执行类似XNameX的操作。)它只适用于确切的文字#Name#。相反,你想做一个带有如下参数的宏:

     #define X(name) struct->name
    

    这会将X(foo)转换为struct->foo