预处理器包含,何时使用<>要么 ””

时间:2012-08-08 16:45:02

标签: c c-preprocessor

  

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

我在C学习中遇到了一些问题,我快速搜索了这个网站上的问题,找不到这个问题的答案。这可能有点愚蠢,但是这里有。

我一直在关注一些c教程,在整本书中,所有包含都是这样做的:

#include <stdio.h>
#include <string.h> etc. etc.
然而,突然之间,他们放下了这个炸弹壳:

#include <stdio.h>
#include "structSize.h"

绝对没有解释为什么使用"...",我完全傻眼了。任何人都可以提供一个解释,说明<...>"..."之间的区别以及何时使用每个区别。

感谢您的帮助 问候,
迈克

2 个答案:

答案 0 :(得分:8)

通常,您对项目中的文件使用#include "...",对“system”包含文件使用#include <...>

区别在于预处理器根据要包含的名称搜索文件的方式和位置。 ""语法通常会首先搜索当前文件的目录。实际的搜索机制是特定于编译器的,因此您需要查看C编译器的文档,以获取有关每个选项使用的实际路径的详细信息。

有关详细信息,请参阅GCC的Include Syntax了解一个实现的示例。

答案 1 :(得分:2)

使用""文件将在包含某些内容的文件所在的目录中搜索,如果找不到包含,编译器将查看标准包含目录(它的编译器依赖于哪个文件夹这是)。

使用<>,编译器将直接查看include目录,而不查看任何其他目录。