关于C#:头文件包含时””和<>之间有什么区别?


What is the difference between “” and <> when a header file is included in a program?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
what is the difference between #include and #include “filename”

我想知道两者之间有什么区别

1
#include"stdio.h"

1
#include <stdio.h>


使用作为系统头,使用"whatever"作为自己的头。

不同的是,当它被括在引号中时,编译器将在本地目录中查找,但使用<>时,它不会查找。如果您想获得技术性的信息,C标准不能保证这一点,但它本质上是所有编译器的工作方式。


""在当前文件的路径中搜索。全局中的<>搜索包括路径。

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

假设您的文件结构如下:

1
2
3
4
5
6
7
8
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相对于如fileX.a的相对路径只是folderX.Z/fileX.Z.a的一部分,即在fileX.a所在的目录中启动路径。


1
#include <file>

此变量用于系统头文件。它在系统目录的标准列表中搜索名为file的文件。您可以使用`-i'选项将目录预先发送到此列表。

1
#include"file"

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

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

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

参考文献: