#import "xxx"和#import <xxx>有什么区别?

8
这可能是一个愚蠢的问题。 #import <QuartzCore/QuartzCore.h>#import "QuartzCore/QuartzCore.h"有什么不同?(<和>与双引号的区别)它们似乎都可以正常工作。

重复这个问题:http://stackoverflow.com/questions/3156432/difference-between-writing-import-filename-h-and-import-filename-h-i-e-wri - TomSwift
啊,我找那些问题找了好久。请标记为重复。 - pixelfreak
这是重复的。请参考这个链接:https://dev59.com/5nA75IYBdhLWcg3wrrJS - Jayprakash Dubey
2个回答

12

一般来说,#import "QuartzCore/QuartzCore.h" 的形式是“寻找我的头文件,如果找不到就去系统头文件中找”,而 <QuartzCore/QuartzCore.h> 的形式是“去系统头文件中找”。理论上,这些位置是由编译器定义的,因此在特定平台上可能会有不同的实现方式,但我还没有遇到过任何不同的 C 编译器。


#import "QuartzCore/QuartzCore.h" 不是寻找系统头文件,而是xCode将框架导入本地头文件。 - Daniel
1
双引号版本会在本地找不到系统头文件时查找系统头文件,这就是他说“它们似乎都可以工作”的原因。(有一个构建设置可以使<>首先搜索用户路径,但我认为这对于这个问题并不是很重要)- 尝试 #include "stdio.h" 它会找到它。 - Stripes

-2

#include <something> 告诉编译器在所有包含目录中查找。
#include "something" 告诉编译器仅在包含该文件的目录中查找。


2
不正确。标准明确规定,如果正常搜索“#include something”失败,则会重新处理为“#include <something>”。因此,更正确的说法是引用版本首先查找相同的目录,然后查找所有包含目录。 - rdb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接