文章起因:
由于本人在项目中一直不清楚什么时候使用define 定义常量,什么时候使用宏,来定
义一些字符串啊,数字啊这些变量,所以就有了这篇文章的所在
首先两者的定义与实现
一.define(宏定义)
#define语法称之为预处理命令。#define声明主要用于将常量(或字符串)赋予有意义的名字,比如当你在编写一个日历程序时,可以定义:
#define MONTHS_PER_YEAR 12
Tips:
1.通常情况下,习惯将预处理的常量名全大写,单词之间用下划线隔开
(与正常变量区分)。
2.如果是定义常量,若这个常量的适用范围局限于.m,那么习惯性在常量名前
加k,若常量在类之外可见,则通常以类名为前缀
预处理代码起的作用实际上相当于在编译之前!!!
预处理代码起的作用实际上相当于在编译之前!!!
预处理代码起的作用实际上相当于在编译之前!!!
重要事情说三遍。也就是说宏使用过多会增加编译时间,
而一个常量在栈中开辟空间是很高效的。
在整个代码中进行了一次“搜索、替换”功能.通常情况下不管是声名字符串还是函数其作用主要有两个:
个人认为使用宏有一下好处:
1.增强代码可读性
2.方便全局使用和修改一些方法和参数
3.增强复用性
(以上为个人总结,标准答案见第二大标题:两者的区别 中的那篇引文博客)
二.const(定义常量)
const 如果是声明常量,仅仅是想要在.m文件中使用,那么一定要同时使用static 和const来声明,若不加系统在编译时会自动为它加一个extern (外部符号),此时,若另一个编译单元出现了同名变量就会报错,并且很难查找错误
只能在警告区找到
这是OC程序员最不愿意看到的错误。。。也是很难查找的错误,跟修改已经创建的类的文件名的错误差不多。 |