【发布时间】:2015-11-10 06:07:11
【问题描述】:
好的,所以我最近才开始在 g++ 编译器中使用 -D 标志以不同方式编译代码。
但是我遇到了一个问题,使用 -D 标志编译一个文件,我需要在后续文件中继续使用它。
例如,我有 2 个文件:
sardine.hpp sardine.cpp
并且这两个文件都有由以下内容包围的部分:
#ifdef PLANKTON
#endif
然后我使用以下代码编译它:
g++ -c -D PLANKTON sardine.cpp -o sardine.o
如果我想在另一个编译中使用指向这个的链接,为了让代码正常工作,我将不得不再次使用 D 标志(据我所知),例如:
g++ -D PLANKTON tuna.cpp sardine.o -o tuna
有没有办法在编译时永久添加定义?这样我下次编译时就不必添加 -D 标志了吗?
对不起,如果我错过了什么:'(
谢谢!
【问题讨论】:
-
每个编译过程都是完全独立的。当编译器解析您的 .cpp 源时,它只能对特定实例拥有的信息进行操作。正如其他人所说,您可能想考虑使用 make 或其他构建系统来更好地管理您的编译设置。您还可以将
#define PLANKTON放在它们都包含的共享头文件中,然后只在一个地方在重建之间对其进行修改,这将使您的命令行更简单。 -
@notmyfriend Ahh 将定义包含在公共标头中可能是可行的方法。该死的太专注于让 -D 标志起作用了:P,谢谢!