为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

陪伴而非守候 2019-07-10 10:20:39
目标C中的导入和包含有什么区别?在Object-C中,#import和#include有什么区别,在哪些时候您应该使用其中一个而另一个呢?有人反对吗?我正在阅读以下教程:http:/www.otierney.net/object-c.html#序言它关于#import和#include的段落似乎自相矛盾,或者至少还不清楚。
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

将#import指令添加到Object-C中,作为#include的改进版本。然而,它是否得到改善仍然是一个争论的问题。#import确保一个文件只包含一次,这样您就不会遇到递归包含的问题。然而,大多数像样的头文件都会保护自己不受这种影响,所以这并不是什么好处。

基本上,这取决于你决定你想使用哪一种。我倾向于为Object-C(比如类定义等)导入标题,并包括我需要的标准C内容。例如,我的一个源文件可能如下所示:

#import <Foundation/Foundation.h>#include <asl.h>#include <mach/mach.h>


查看完整回答
反对 回复 2019-07-10
?
心有法竹

TA贡献1866条经验 获得超5个赞

我同意杰森的观点。

我在做这件事时被抓到了:

#import <sys/time.h>  // to use gettimeofday() function#import <time.h>      // to use time() function

对于GNU GCC,它一直抱怨time()函数没有定义。

因此,我将#import改为#include,一切顺利。

理由:

您#import<sys/time.h>:
    <sys/time.h> includes only a 部分<time.h>的值,使用#Definition

您#import<time.h>:
不去。即使只包含了<time.h>的一部分,如
就#import而言,该文件现在已经完全地包括在内。

底线:

C/C+报头传统上包括零件包括其他文件。
因此,对于C/C+头,请使用#include。
对于objc/objc+头,使用#import。


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 530 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信