代码之家  ›  专栏  ›  技术社区  ›  Timo

如果宏变量后跟构成有效标识符的字符,则不会展开宏变量

  •  -1
  • Timo  · 技术社区  · 7 年前

    给定预处理器宏,如

    #define DECLARE(NAME) \
        int NAME;         \
        int NAME_2
    

    Name_2 表示新标识符。是否可以扩展 Name 因此

    DECLARE(x);
    

    成为

    int x;
    int x_2;
    
    2 回复  |  直到 7 年前
        1
  •  4
  •   user7860670    7 年前

    您可以使用 ## 胶水:

    #define DECLARE(NAME) \
       int NAME;         \
       int NAME##_2
    
        2
  •  3
  •   Bathsheba    7 年前

    宏的最后一行可能是

    int NAME##_2
    

    这样就可以了。 ## 连接 代币。