【问题标题】:Can macros in C++ define macros?C++ 中的宏可以定义宏吗?
【发布时间】:2012-01-20 14:53:44
【问题描述】:

我想知道是否可以在 C++ 中定义一个宏来定义另一个可以在以后的代码中使用的宏。这可能吗,还是 g++ 使用的预处理器对此过于有限?

【问题讨论】:

  • 不是“g++ 使用的预处理器”不够强大,而是 C++ 语言本身不允许这样做。如果你解释了你想要完成的事情,我相信这里的人会想出一个解决方案。
  • 你会如何被这个“限制”?分享你想要完成的事情。

标签: c++ macros g++


【解决方案1】:

不,您不能在另一个宏的扩展中定义一个宏。

【讨论】:

    【解决方案2】:

    不,您不能将宏定义为宏。

    【讨论】:

      【解决方案3】:

      预处理器只对源代码进行一次传递,因此这是不可能的。但是,您可以使用外部工具在编译之前执行一些预处理,例如 m4

      【讨论】:

        【解决方案4】:

        你可以做这样的事情,它不是你想要的,但它可能会有所帮助。

        #ifdef ENABLE_MACRO_1
        #define PRINT_MACRO(varName)   \
                std::cout<<varName<<std::endl;
        #else
        #define PRINT_MACRO(varName)   \
                //do nothing
        #endif
        

        因此,您可以根据已定义的另一个前体条件定义宏。

        【讨论】:

          猜你喜欢
          • 2017-11-07
          • 2011-12-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-15
          • 1970-01-01
          相关资源
          最近更新 更多