zoukankan
html css js c++ java
#include #import @class 讲解
#include 区分 #include
与#include "x.h"的作用 #include
:它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件 . #include "x.h":用户自定义的文件用双引号引用,编译器首先会在用户目录下查找,然后到安装目录中查找,最后在系统文件中查找。 在使用#include的时候要注意处理重复引用(这也是objc中#include与#import的区别) 例如:ClassA 与 ClassB同时引用了ClassC,不做重复引用处理的时候在ClassD中同时引用ClassA,ClassB编译会提示对ClassC重复引用的错误. 我们可以:#ifndef _CLASSC_H #define _CLASSC_H #include "ClassC" #endif 这样处理在编译时就不会有重复引用的错误出现(在objc中#import解决了这个问题,这是它们的区别) #import #import 大部分功能和#include是一样的,但是他处理了重复引用的问题,我们在引用文件的时候不用再去自己进行重复引用处理. @class 主要是用于声明一个类,告诉编译器它后面的名字是一个类的名字,而这个类的定义实现是暂时不用知道的,后面会告诉你.也是因为在@class仅仅只是声明一个类,所以在后面的实现文件里面是需要去#import这个类,这时候才包含了这个被引用的类的所有信息。 综上所述#include,#import与@class的区别可以做一下理解: #include与#import在引用一个类的时候会包含这个类的所有信息包括变量方法等,但是这样做会对编译效率造成影响.比如有100个类都#import了ClassA,那么在编译的时候这100个类都会去对ClassA处理.又比如A被B引用,B被C引用,C被D引用.....此时如果A被修改,那么后面的B,C,D.....都需要重新进行编译.还有一个用法会引起编译错误的就是在ClassA中#import ClassB 在ClassB中#import ClassA那么在编译的时候也会出现未知错误。 所以一般来说,在interface中引用一个类,就用@class,它会把这个类作为一个类型来使用,而在实现这个interface的文件中,如果需要引用这个类的实体变量或者方法之类的,还是需要import这个在@class中声明的类。 来自:
http://cmdeye.com/ios/thread-130-1-1.html
查看全文
相关阅读:
企业如何利用大数据?八个典型应用案例告诉你
无焦点下获取条码枪返回值的Hook(再次改良版)
combining-filters
为Elasticsearch添加中文分词,对比分词器效果
ElasticSearch NEST搜索
How to write date range query in Nest ElasticSearch client?
ElasticSearch关联查找
form-inline+form-group 实现表单横排显示(Bootstrap)
Elastic Search 5.x Nest Multiple Queries C#
mysql 查看索引
原文地址:https://www.cnblogs.com/wanyakun/p/3403302.html
最新文章
我应该提交 vendor 目录中的依赖包吗
source tree中 git 不显示分支
yii2 config
这家伙有点懒,还没有个性签名 :) --工具篇02
php数组的遍历讲解 for foreach list each key
Yii2 view 层显示值
IntelliJ IDEA 15 创建maven项目
【dp】最大乘积
【dp】P2642 双子序列最大和
【dp】合唱队形
热门文章
4.28考试总结(下午)
4.28考试总结(上午)
SQL Server 2012中LEAD函数简单分析
SQL Server手把手教你使用profile进行性能监控
SQL Server CTE 递归查询全解
SQL Server 中ROW_NUMBER() OVER基本用法
合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
SQL Server 2016 的JSON功能
Access与SQL Server 语法差异
使用 EXISTS 代替 IN 和 inner join
Copyright © 2011-2022 走看看