如何在编译期间为 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++) 环境变量中。
假设我有以下代码:
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++) 环境变量中。