【问题标题】:Header Files Mystery [duplicate]头文件之谜[重复]
【发布时间】:2011-04-02 04:16:10
【问题描述】:

可能重复:
what is the difference between #include <filename> and #include “filename”

为什么我们对自定义构建类使用引号(“...”),对内置类使用大括号(&lt;...&gt;)?

【问题讨论】:

    标签: c++ objective-c c


    【解决方案1】:

    表示标头不是系统范围的。

    这是约定,不是要求。

    顺便说一句,这些不是引号,而是引号。排版领域有区别。

    【讨论】:

    • 也不是大括号...:p
    • 从排版上讲,它们也不是真正的引号。引号看起来像“this”,而不是“this”。 :)
    【解决方案2】:

    至少对于 C 来说,现在没有什么区别。 ISO 标准规定文件的位置在两种情况下都由实现定义。

    通常的方法是将&lt;&gt; 用于系统标头(例如/usr/include 下的内容),将"" 用于您自己的标头,但这不是必需的。

    C99 的相关位来自 6.10.2,“源文件包含”,引用如下。


    表单的预处理指令

    # include <h-char-sequence> new-line
    

    搜索一系列实现定义的位置以查找唯一标识的标头 &lt;&gt; 分隔符之间的指定序列,并导致替换 标头的全部内容指示。如何指定地点或标题 标识是实现定义的。

    表单的预处理指令

    # include "q-char-sequence" new-line
    

    导致该指令被标识的源文件的全部内容替换 通过" 分隔符之间的指定顺序。搜索命名的源文件 以实现定义的方式。如果不支持此搜索,或者如果搜索 失败,指令被重新处理,就像它读取一样

    # include <h-char-sequence> new-line
    

    与原始的包含相同的序列(包括&gt; 字符,如果有的话) 指令。

    【讨论】:

    【解决方案3】:

    是的,据我所知,尖括号(&lt;'s)用于表示头文件是由编译器提供的,或者编译器已被告知头文件可以在其中的目录被发现(-I)。引号 ("'s) 通常用于源代码树中的头文件。但就像其他人提到的那样,这不是必需的。

    【讨论】:

    • 即使头文件在源代码树中,你仍然需要告诉编译器如何找到它。 -I. 不是默认值。
    • 什么?我从来没有说过 -I 是默认值...我说 的内容,或者如果您使用 -I 指定路径
    猜你喜欢
    • 2020-02-03
    • 1970-01-01
    • 2020-01-07
    • 2023-04-06
    • 2023-03-14
    • 2013-07-29
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    相关资源
    最近更新 更多