12

我们的开发环境大量使用具有本地修改的标头的目录,编译器应该看到这些目录,而不是“提交的”“存储库”版本。

如果标头 A 包含标头 B,则 gcc 在 A 所在的同一目录中查找 B,并且不遵循搜索路径。所以我们使用-I-gcc 上的选项来防止这种情况。然后 Gcc 将严格遵循包含路径的层次结构。与 gcc4 一样,该-I-选项已弃用并由-iqoute. 我无法弄清楚如何使用该-iquote选项获得相同的行为,因为我认为它缺乏禁用“当前”目录中搜索的副作用。

http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#Invocation

任何想法如何实现相同的行为?

4

1 回答 1

8

#include <foo.h>AFAIK,除了使用表单而不是在代码中之外,没有其他方法可以停用您抱怨的行为#include "foo.h"

ISTR,但我没有找到参考资料,即在不-I-为此方面提供另一种机制的情况下弃用的理由是,库通常使用该表单#include "foo.h"来确保它们获得自己的内部头文件,并且在某些情况下foo.h使用破坏了它们如果-I-其他人碰巧在搜索路径上有一个类似名称的文件。

于 2012-09-10T15:10:12.940 回答