#import and #include
Tip
#import
Ojbective-C/Objective-C++ 头文件,#include
C/C++ 头文件。
基于你所包括的头文件的编程语言,选择使用 #import
或是 #include
:
- 当包含一个使用 Objective-C、Objective-C++ 的头文件时,使用
#import
。 - 当包含一个使用标准 C、C++ 头文件时,使用
#include
。头文件应该使用 #define 保护。
一些 Ojbective-C 的头文件缺少#define
保护,需要使用#import
的方式包含。由于 Objective-C 的头文件只会被 Objective-C 的源文件及头文件包含,广泛地使用#import
是可以的。
文件中没有 Objective-C 代码的标准 C、C++ 头文件,很可能会被普通的 C、C++ 包含。由于标准 C、C++ 里面没有 #import
的用法,这些文件将被 #include
。在 Objective-C 源文件中使用 #include
包含这些头文件,意味着这些头文件永远会在相同的语义下包含。
这条规则帮助跨平台的项目避免低级错误。某个 Mac 开发者写了一个新的 C 或 C++ 头文件,如果忘记使用 #define
保护,在 Mac 下使用 #import
这个头文件不回引起问题,但是在其它平台下使用 #include
将可能编译失败。在所有的平台上统一使用 #include
,意味着构造更可能全都成功或者失败,防止这些文件只能在某些平台下能够工作。
- #import <Cocoa/Cocoa.h>
- #include <CoreFoundation/CoreFoundation.h>
- #import "GTMFoo.h"
- #include "base/basictypes.h"