目标C中的导入和包含有什么区别?

目标C中的导入和包含有什么区别?

在Object-C中,#import和#include有什么区别,在哪些时候您应该使用其中一个而另一个呢?有人反对吗?

我正在阅读以下教程:http:/www.otierney.net/object-c.html#序言它关于#import和#include的段落似乎自相矛盾,或者至少还不清楚。


陪伴而非守候
浏览 531回答 3
3回答

30秒到达战场

将#import指令添加到Object-C中,作为#include的改进版本。然而,它是否得到改善仍然是一个争论的问题。#import确保一个文件只包含一次,这样您就不会遇到递归包含的问题。然而,大多数像样的头文件都会保护自己不受这种影响,所以这并不是什么好处。基本上,这取决于你决定你想使用哪一种。我倾向于为Object-C(比如类定义等)导入标题,并包括我需要的标准C内容。例如,我的一个源文件可能如下所示:#import&nbsp;<Foundation/Foundation.h>#include&nbsp;<asl.h>#include&nbsp;<mach/mach.h>

心有法竹

我同意杰森的观点。我在做这件事时被抓到了:#import&nbsp;<sys/time.h>&nbsp;&nbsp;//&nbsp;to&nbsp;use&nbsp;gettimeofday()&nbsp;function#import&nbsp;<time.h>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;to&nbsp;use&nbsp;time()&nbsp;function对于GNU GCC,它一直抱怨time()函数没有定义。因此,我将#import改为#include,一切顺利。理由:您#import<sys/time.h>:&nbsp;&nbsp;&nbsp;&nbsp;<sys/time.h> includes only a&nbsp;部分<time.h>的值,使用#Definition您#import<time.h>:不去。即使只包含了<time.h>的一部分,如就#import而言,该文件现在已经完全地包括在内。底线:C/C+报头传统上包括零件包括其他文件。因此,对于C/C+头,请使用#include。对于objc/objc+头,使用#import。
打开App,查看更多内容
随时随地看视频慕课网APP