如何在编译期间为 C++ 预处理器指令定义值?

How to define value for C++ preprocessor directives during compile time?

假设我有以下代码:

int main() {

#ifdef NEWMETHOD
    val = new_method("hello world!");
#else
    val = old_method("hello world!");
#endif

    return 0;
}

如何在编译时定义 NEWMETHOD?

你只需要写

#define NEWMETHOD

在进行 #ifdef 检查之前。

当然,那么你就不需要一开始就写#ifdef

如果你想在不改变源代码的情况下定义宏,你可以在编译时用-D标志传入,像这样:

g++ -DNEWMETHOD main.cpp

很明显,替换具体的编译命令,和文件名。

你可以

  • 插入定义

    #define NEWMETHOD
    

    在使用之前进入源代码或者

  • -DNEWMETHOD 添加到您的编译器调用中(适用于所有流行的编译器,包括 GCC、clang 和 MSVC)。

    根据您的构建系统,您可能希望将其添加到 CFLAGS (C) 或 CXXFLAGS (C++) 环境变量中。