Macros C#定义宏名称中带有#的语句

Macros C#定义宏名称中带有#的语句,macros,c-preprocessor,Macros,C Preprocessor,有可能以某种方式声明这样的#define语句吗 #define #Name# struct->name 我得到一个错误“error:macro names必须是标识符”,我知道这个错误与#符号有关。是否有允许使用#符号的解决方法?否。宏的名称必须是标识符,不能出现在标识符中。否。宏的名称必须是标识符,不能出现在标识符中。宏名称必须是标识符,这意味着: 必须以字母或下划线开头 只能包含字母、数字和下划线 但更重要的问题是,我不认为他们会做你想做的事。如果#define#Name#s

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

    #define #Name# struct->name

我得到一个错误“error:macro names必须是标识符”,我知道这个错误与#符号有关。是否有允许使用#符号的解决方法?

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

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

宏名称必须是标识符,这意味着:

  • 必须以字母或下划线开头
  • 只能包含字母、数字和下划线
  • 但更重要的问题是,我不认为他们会做你想做的事。如果
    #define#Name#struct->Name
    被接受,这并不意味着
    #foo#
    会变成
    struct->foo
    (我想这就是你想要的。如果我错了,你只是想让它为
    #Name#
    工作,那么就做
    XNameX
    )它只适用于确切的文本
    #Name
    。相反,您希望执行一个宏,该宏采用如下参数:

     #define X(name) struct->name
    

    X(foo)
    转换为
    struct->foo

    的宏名称必须是标识符,这意味着:

  • 必须以字母或下划线开头
  • 只能包含字母、数字和下划线
  • 但更重要的问题是,我不认为他们会做你想做的事。如果
    #define#Name#struct->Name
    被接受,这并不意味着
    #foo#
    会变成
    struct->foo
    (我想这就是你想要的。如果我错了,你只是想让它为
    #Name#
    工作,那么就做
    XNameX
    )它只适用于确切的文本
    #Name
    。相反,您希望执行一个宏,该宏采用如下参数:

     #define X(name) struct->name
    
    这将把
    X(foo)
    转换为
    struct->foo