这就是我想要做的:
$ c++ -D GENERATED=build/generated-content main.cpp
我的 main.cpp
文件:
#include "GENERATED/header.h"
void f() { /* something */ }
目前这段代码无法编译。我该如何解决?这是否可能?
最佳答案
您似乎想根据某些“编译配置文件”使用不同的 header 。
我宁愿建议使用 -I
指令来指定包含目录,而不是 -D
解决方案。
假设您有以下文件树:
/
debug/
header.h
release/
header.h
main.cpp
:
#include "header.h"
/* some instructions, not relevant here */
并且在您的 Makefile
(或您使用的任何工具)中,只需指定要使用的正确的 include 目录,具体取决于您想要的任何原因:
g++ -I debug main.cpp // Debug mode
g++ -I release main.cpp // Release mode
重要脚注:我不知道您是否打算将其用作调试/发布 开关。然而,这样做会很奇怪:接口(interface)(包含的 .h
文件)不应在 release
和 debug
之间改变。如果您需要这个,通常的方法是使用定义启用/禁用代码的某些部分,主要在 .c
(和 .cpp
)文件中。
关于c++ - 我可以在#include 指令中使用预处理器变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3256428/