【问题标题】:What is the difference between "" and <> when a header file is included in a program? [duplicate]当程序中包含头文件时,“”和<>有什么区别? [复制]
【发布时间】:2011-07-08 15:22:34
【问题描述】:

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

我想知道有什么区别

#include "stdio.h"

#include <stdio.h>

【问题讨论】:

  • 肯定是重复的吧?
  • @Paul R:你可以用搜索框在大约 5 秒内找到它。
  • @JeremyP:今天早上我的 Google Fu 显然很弱,因为我实际上已经尝试过但没有找到任何我确信肯定有很多重复的东西。但是非常祝贺您自己找到了一个。
  • @Paul R:我在这个网站上使用了搜索框,而不是谷歌。我不知道这是否会有所不同。
  • @JeremyP:我似乎对 SO 搜索框不太满意,我通常只在 Google 上搜索&lt;search terms&gt; site:stackoverflow.com,这似乎更有效。但在这种情况下显然不是(可能是因为 Google 不喜欢 &lt;&gt;"" 作为搜索词)。

标签: c


【解决方案1】:

"" 搜索当前文件的路径。 &lt;&gt; 在全局包含路径中搜索。

编辑:您要求提供绝对路径和相对路径。

假设你的文件结构如下:

folderX
 -fileX.a
 -fileX.b
 -folderX.Y
  -fileX.Y.a
  -fileX.Y.b
 -folderX.Z
  -fileX.Z.a

那么,fileX.Z.a 的绝对路径将是 folderX/folderX.Z/fileX.Z.a,假设 folderX 是可用的最顶层目录。 fileX.Z.a 相对于 e.g. 的相对路径fileX.a 只是folderX.Z/fileX.Z.a 的一部分,即您在fileX.a 所在的目录中启动路径。

【讨论】:

    【解决方案2】:

    &lt;whatever&gt; 用于系统标头,将"whatever" 用于您自己的标头。

    不同之处在于,当它用引号括起来时,编译器会在本地目录中查找,但使用&lt;&gt;,则不会。如果你想获得技术,C 标准并不能保证这一点,但它是所有编译器本质上的工作方式。

    【讨论】:

      【解决方案3】:
      #include <file>
      

      此变体用于系统头文件。它在系统目录的标准列表中搜索名为 file 的文件。您可以使用 `-I' 选项将目录添加到此列表中。

      #include "file"
      

      此变体用于您自己程序的头文件。它首先在包含当前文件的目录中搜索名为 file 的文件,然后在用于 . 的相同目录中搜索。

      #include 的参数,无论是用引号还是尖括号分隔,都表现得像一个字符串常量,因为无法识别 cmets,也不会扩展宏名称。因此,#include 指定包含名为 `x/*y' 的系统头文件。

      但是,如果文件名中出现反斜杠,则它们被视为普通文本字符,而不是转义字符。不处理任何适用于 C 中字符串常量的字符转义序列。

      Reference:

      【讨论】:

        猜你喜欢
        • 2016-08-26
        • 1970-01-01
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        • 2020-08-19
        • 1970-01-01
        • 2011-07-17
        相关资源
        最近更新 更多