在 Linux 下用 C++ 设置宏,通常有以下几种常见方式,按使用场景给你总结一下:
-D 定义宏g++ main.cpp -DDEBUG -o main
等价于代码里:
#define DEBUG
g++ main.cpp -DMAX_VALUE=100 -o main
等价于:
#define MAX_VALUE 100
g++ main.cpp -DNAME=\"hello\" -o main
代码中:
cout << NAME << endl;
CXX = g++
CXXFLAGS = -Wall -DDEBUG -DVERSION=2
main: main.cpp
$(CXX) main.cpp $(CXXFLAGS) -o main
编译:
make
add_definitionsadd_definitions(-DDEBUG)
add_definitions(-DVERSION=3)
target_compile_definitions(更现代)target_compile_definitions(myapp PRIVATE DEBUG VERSION=3)
option(ENABLE_DEBUG "Enable debug" ON)
if(ENABLE_DEBUG)
target_compile_definitions(myapp PRIVATE DEBUG)
endif()
#define DEBUG
#define MAX 100
⚠️ 一般不推荐在源码里写死,除非是内部常量。
#ifdef DEBUG
#error "DEBUG is defined"
#endif
或者:
cout << "DEBUG defined" << endl;
| 场景 | 宏示例 |
|---|---|
| 调试 | -DDEBUG |
| 平台区分 | -DLINUX |
| 版本控制 | -DVERSION=2 |
| 功能开关 | -DENABLE_FEATURE_X |
如果你用的是 具体工具链(如 CMake / Makefile / bazel / vscode),可以告诉我,我可以给你更针对性的配置示例。