A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wx_rMI3RFr8 中级黑马   /  2016-4-18 00:08  /  2564 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求解include和import的区别!求指点!

7 个回复

倒序浏览
区别1:#import是由Xcode使用的编译器提供的,#import可保证头文件只被包含一次(通俗地讲,就是可以防止重复包含),而C语言中要使用基于#ifdef命令的方案来避免这一问题。
区别2:在C语言中,往往要包含很多头文件,像stdio、string、stdlib等等,而在OC中,只要用一句#import <foundation/foundation.h>就可以代替#include的很多语句。
      仅供参考,相互学习,多多指教,for better ithetma!
回复 使用道具 举报
前来学习         
回复 使用道具 举报
二楼总结的挺全的了,不过要指出的是,#import指令和#include指令都是预处理指令,在编译前完成指令操作,将目标文件复制到指令的位置,#import指令只是#include指令的加强,可以避免重复包含,不过#import也有缺点,当我们在不同的类文件中互相使用的#import指令,此时则会出现重复定义的错误,所以这个时候我们通常使用@class关键字在头文件中,来声明一个类,只在.m实现文件中再真正导入需要的文件,来避免在头文件中重复定义的问题
回复 使用道具 举报
二楼总结的挺全的
回复 使用道具 举报
学习了
回复 使用道具 举报
简单点说#import可以防止重复包含,#include则不会,需要加入#ifnodef ,但是#import在多个文件相互引用时编译效率也会变低,因为一旦其中一个中改变,下面的都需要重新编译.一般重复引用时都用@class
回复 使用道具 举报
二楼正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马