黑马程序员技术交流社区

标题: include和import的区别? [打印本页]

作者: 田中    时间: 2015-8-20 22:18
标题: include和import的区别?
#import <Foundation/Foundation.h>
#import <stdio.h>
#include<stdio.h>
#include <Foundation/Foundation.h>
上面4种头文件系统都能运行。他们的有什么区别呢?求指点....

作者: 田中    时间: 2015-8-20 22:19
我只知道一点,include和import都能防止重复包含。请问还有别的特点吗?或者区别吗?

作者: Jo_    时间: 2015-8-20 22:56
#import可以防止文件重复包含,#include需要#ifndef XXXXX      #define XXXXX      #endif才能防止文件重复包含。
作者: ycsyoung    时间: 2015-8-20 23:16
楼上正解~~
作者: 第一梦    时间: 2015-8-20 23:20
同意楼上。
#import比起#include的好处就是不会引起交叉编译。
在 Objective-C中,#import 被当成 #include 指令的改良版本来使用。除此之外,#import确定一个文件只能被导入一次,这使你在递归包含中不会出现问题。
作者: yushimin763    时间: 2015-8-21 07:34
学习了
作者: 孙金亮    时间: 2015-8-21 08:05
我来逛逛我来逛逛
作者: tangbinbin    时间: 2015-8-21 08:55
#import可以重复包含,而#include不可以
作者: 企业部-阿狗老师    时间: 2015-8-21 08:57
#import可以重复包含,而#include不可以
作者: 一个人の旋律    时间: 2015-8-21 11:18
2L 正解...
作者: tr2e    时间: 2015-8-21 11:47
                    学习了
作者: iphone    时间: 2015-8-21 13:07
(1)#import指令是Object-C针对#include的改进版本,#import确保引用的文件只会被引用一次,这样就不会陷入递归包含的问题中。
  (2)#import与@class二者的区别在于:
  #import会链入该头文件的全部信息,包括实体变量和方法等;而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑。在头文件中, 一般只需要知道被引用的类的名称就可以了。
  不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
作者: 小笼包    时间: 2015-8-21 13:11
                       受教了
作者: 梦蕊Rui    时间: 2015-8-21 19:31
领悟了啊。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2