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

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

本文关键字:指令 处理器 预处理 C++ 编译 定义      更新时间:2023-10-16

假设我有以下代码:

int main() {
#ifdef NEWMETHOD
val = new_method("hello world!");
#else
val = old_method("hello world!");
#endif
return 0;
}

如何在编译时定义 NEWMETHOD?

你可以

  • 通过插入来定义它

    #define NEWMETHOD
    

    在使用之前将其放入源代码中,或者

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

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

你只需要写

#define NEWMETHOD

在执行#ifdef检查之前。

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

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

g++ -DNEWMETHOD main.cpp

显然,替换特定的编译器命令和文件名。