如何在编译时定义 C++ 预处理器指令的值?

Kin*_*arō 4 c++ c-preprocessor

假设我有以下代码:

int main() {

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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何在编译时定义 NEWMETHOD?

Mar*_*tin 7

你可以

  • 通过插入来定义它

    #define NEWMETHOD
    
    Run Code Online (Sandbox Code Playgroud)

    使用前先进入源代码或

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

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


cig*_*ien 5

你只需要写

#define NEWMETHOD
Run Code Online (Sandbox Code Playgroud)

在您进行#ifdef检查之前。

当然,那么你就不需要#ifdef首先编写。

如果您想在不更改源代码的情况下定义宏,可以在编译期间使用标志将其传入-D,如下所示:

g++ -DNEWMETHOD main.cpp
Run Code Online (Sandbox Code Playgroud)

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