c++ - 防止 gcc 在包含搜索路径上搜索当前目录 "-I-"选项

标签 c++ search gcc path include

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

如果 header A 包含 header B,gcc 会在 A 所在的同一目录中查找 B,但不遵循搜索路径。 所以我们在 gcc 上使用了 -I- 选项来防止这种情况发生。 Gcc 将严格遵循 include-path 的层次结构。 与 gcc4 一样,-I- 选项已被弃用并由 -iqoute 取代。 我无法弄清楚如何使用 -iquote 选项获得相同的行为,因为我认为它没有在“当前”目录中禁用搜索的副作用。

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

有什么想法可以实现相同的行为吗?

最佳答案

据我所知,除了使用 #include <foo.h> 表格之外,没有其他方法可以取消您所提示的行为。而不是 #include "foo.h"在您的代码中。

ISTR,但我没能找到关于弃用 -I- 的理由的引用资料在没有为该方面提供另一种机制的情况下,库通常使用 #include "foo.h" 的形式。以确保他们获得自己的内部头文件 foo.h和使用 -I-在某些情况下,如果其他人恰好在搜索路径上有一个名称相似的文件,则在某些情况下会破坏它们。

关于c++ - 防止 gcc 在包含搜索路径上搜索当前目录 "-I-"选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12353429/

相关文章:

c++ - 为什么 emplace_back 调用析构函数?

c++ - 使用goto语句时,代码不会在循环内的期望位置输出

c++ - std::assert 发生了什么

python - 在文件中搜索并用单词替换数字

.net - 从 .NET 中的文本中提取关键字

c++ - C++14 中通用 lambda 的奇怪编译器行为

c++ - 当浮点值包含逗号而不是点时,如何读取该值?

我可以使用 while(strstr(name[a],sname)!=NULL)

gcc - 当线程清理程序报告数据竞争时如何添加断点?

C++ 预编译 header : Two generated . gch 对于同一源文件从不相同