在#define中使用标记连接

时间:2015-01-14 13:11:39

标签: c-preprocessor string-concatenation preprocessor-directive

是否有在##中使用预处理器并置运算符#define的替代方法,如下所示

#define EXCLUDE_FROM_INSTANTIATION( Type )   \
    #define SUPPRESS_##Type                  \
    DO_CRAZY_STUFF()                         \
    #undef SUPPRESS_##Type                   \

1 个答案:

答案 0 :(得分:1)

我不认为可以使用C预处理器完成。最明显的解决方案是运行预处理器两次。这将涉及自定义构建步骤,这对于试图维护代码的人来说并不是直观的。通常,如果您需要类似的东西,那么转向更强大的宏处理器/代码生成器会更有意义。其中一个最常见的免费版本是m4