如何在编译时定义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
在使用之前将其放入源代码中,或者
-
将
-DNEWMETHOD
添加到编译器调用中(适用于所有流行的编译器,包括GCC,clang和MSVC(。根据您的构建系统,您可能希望将其添加到
CFLAGS
(C( 或CXXFLAGS
(C++( 环境变量中。
你只需要写
#define NEWMETHOD
在执行#ifdef
检查之前。
当然,那么你一开始就不需要写#ifdef
。
如果要在不更改源代码的情况下定义宏,可以在编译期间使用-D
标志传入宏,如下所示:
g++ -DNEWMETHOD main.cpp
显然,替换特定的编译器命令和文件名。
相关文章:
- 如何在编译时定义C++预处理器指令的值?
- 如何在 c++ 预处理器指令中使用 "#" 作为字符
- 有C++标准库 ifdef 或 ifndef 预处理器指令吗?
- 不能在预处理器指令中使用 printf
- ARMC6忽略预处理器指令
- 每个 #include 指令的预处理器的时间成本是多少?
- 是否可以转换预处理器指令中的字符?
- 如何使用C++中的处理器指令来实现快速算术运算
- 用于在运行时选择变量的 C++ 预处理器指令
- 如何使用预处理器指令包含两次具有不同代码的文件?
- 将预处理器指令作为语句的一部分
- C++ 预处理器指令函数
- 如何在整个编辑中遵循预处理器指令
- 将多个Pragma指令放入一个预处理器定义中
- Bullet Physics源代码未在X86中构建 - Visual Studio 2017中错误的预处理器指令
- 预处理器指令:为什么使用#Define的标题文件标识符与标头文件名不同
- 使用正则表达式筛选预处理器指令
- 该预处理器指令在这里可以接受
- 将使用预处理器指令来定义美元符号表示的内容会导致任何冲突
- 对测试单元使用预处理器指令的相关性