#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,意味着构造更可能全都成功或者失败,防止这些文件只能在某些平台下能够工作。

  1. #import <Cocoa/Cocoa.h>
  2. #include <CoreFoundation/CoreFoundation.h>
  3. #import "GTMFoo.h"
  4. #include "base/basictypes.h"