包含和导入之间的区别

时间:2012-11-06 11:40:01

标签: objective-c ios include header-files include-guards

  

可能重复:
  What is the difference between #import and #include in Objective-C?

之间有什么区别
#include< >
#include" "

#import< >
#import" "

4 个答案:

答案 0 :(得分:14)

#import指令是#include的改进版本。  #import确保文件只被包含一次,这样您就不会遇到递归包含的问题。

#import ""首先检查项目文件夹中的标题,然后转到系统库,#import<>检查系统标题“。理论上,这些位置是编译器定义的,它们可以在给定的情况下以不同方式实现平台。

答案 1 :(得分:3)

使用#import时,标题包括后卫是不必要的。否则,它就像#include

标题包括guard,在C和C ++文件中看到:

#ifndef HGUARD_MONHeader_h
#define HGUARD_MONHeader_h

...header contents...

#endif

答案 2 :(得分:3)

import是超级包含,它确保文件只包含一次。这可以节省您的递归包含。 关于&#34;&#34;和&lt;&gt;。 &#34;&#34;在本地目录中搜索和&lt;&gt;用于系统文件。

答案 3 :(得分:2)

#import指令已添加到Objective-C,作为#include的改进版本。然而,它是否得到改善仍然是一个争论的问题。 #import确保文件只被包含一次,这样你就不会遇到递归包含问题。然而,大多数体面的头文件无论如何都能保护自己免受此类攻击,所以它并没有那么大的好处。

What is the difference between #import and #include in Objective-C?

  

#include和#import请求预处理器*读取文件和   将其添加到其输出中。 #include和#import之间的区别是   该

     

#include允许您多次包含同一文件。 #进口   确保预处理器仅包含一次文件。 C   程序员倾向于使用#include。 Objective-C程序员倾向于使用    #进口。

     

*在Objective-C中编译文件分两次完成。首先,
  预处理器遍历文件。输出来自   预处理器进入真正的编译器。