【问题标题】:Rules for locating header files定位头文件的规则
【发布时间】:2011-11-30 11:53:50
【问题描述】:

当您编写#include "foo.h" 时,我希望编译器首先检查执行包含的文件的目录(而不是当前目录),如果没有找到,则返回搜索路径列表就像#include <foo.h>一样。

除非指定了绝对路径#include "/foo.h",在这种情况下只需要检查绝对路径。

是否存在规则不同的 C 编译器?

【问题讨论】:

  • 我正在使用 gcc 但规则与您列出的相同..!我认为包含这些文件是 c 语言的一部分,不是吗?
  • 奇怪的是,语言规范说它是定义的实现。这就是为什么我要检查是否有其他实现。
  • 哦,那么 +1 给你...可能是一些交叉编译工具链以其他方式执行..!! o/w gcc ,sun studio,visual studio,turbo 的编译器,都遵循这个规则。
  • 该标准无法定义如何搜索目录,因为这会将实施限制为在其文件系统中实际具有目录的系统。或者有一个文件系统...

标签: c compiler-construction header-files include-path


【解决方案1】:

Kernighan 和 Ritchie 写道:

[#include "foo"] 首先搜索与原始源文件相关联的内容(故意依赖于实现的短语),如果搜索失败,则与第一种形式一样。

这意味着,不要对报价的搜索策略做任何假设。但是,我遇到的所有编译器都共享首先在包含文件的路径中搜索的实践,如果没有找到则回退到编译器的搜索路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2016-04-18
    相关资源
    最近更新 更多