宏定义中是使用 const 还是 使用 define

转载 2016年06月01日 14:42:29
const 和 define 在开发中常用来定义常量,这样做的好处是:使代码更易维护、提高代码的效率。

1、const
const是C/C++中的一个关键字(修饰符), const一般用来定义一个常量, 既然叫做常量, 即以后再也不能修改其值。
const 定义常量时,编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率比宏定义要高。从汇编的角度来看,只是给出了对应的内存地址,所以,const定义的常量在程序运行过程中只有一份拷贝。
const 定义常量时,通常是同时定义常量的类型、值,且常与 static 结合使用。
如:
[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. static CGFloat const kScale = 0.8;  
  2. static NSString *const identifierCell = @"ListCell";  

2、define
define, 宏定义, 则是一条预编译指令, 编译器在编译阶段会将所有使用到宏的地方简单地进行替换。
define 定义常量时,在内存中有若干个拷贝。
define 定义常量时,只是定义了常量的值,但未做类型设置。

define 除了定义常量外,还能进行高级宏定义功能
如:定义函数;定义OC中常用的单例模式;还能根据传参数生成字符串。
[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /// 定义常量  
  2. #define USERID @"123456"  
  3. /// 获取当前app delegate  
  4. #define GetAPPDelegate ((AppDelegate *)[UIApplication sharedApplication].delegate)  
  5. /// 打开浏览器  
  6. #define OpenUrlInExplorer(urlString) {NSURL *url = [[NSURL alloc] initWithString:urlString];[[UIApplication sharedApplication] openURL:url];}  

个人建议在确定了使用的常量类型,及常量值时使用 const 进行定义;而简单的函数,或传参字符串等高级定义时,则使用 define 进行宏定义。

举报

相关文章推荐

宏定义中是使用 const 还是 使用 define

const 和 define 在开发中常用来定义常量,这样做的好处是:使代码更易维护、提高代码的效率。 1、const const是C/C++中的一个关键字(修饰符), const一般用来定义...

#define?const?还是enum?

如何写优雅的代码(2)——#define?const?还是enum? 收藏     //========================================================...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

C++ 宏定义#define 中##的使用

在C++的宏定义中,符号##一般是用于连接,包括参数的连接,参数与标识符的连接等,然后形成一个新的标识符。 下面举几个例子来进行说明。 eg1: #define ADD(a,b) a##b #...

使用包含还是私有继承

has-a关系   首先,来看两种类的定义: 这是包含: [cpp] view plain copy class Student   ...

#define vs const in Objective-C 用 #define 还是 const

#define vs const in Objective-C 问题: 我是一个 Objective-C 的新手。我有几个关于 const 和 预处理指令 #define 的问题。 ...

const的使用

在C/C++中关键字const用来定义一个只读的变量或者对象
  • J8121
  • J8121
  • 2016-07-16 22:01
  • 93

const的那些事

1. const修饰普通变量和指针 const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本...

const的常见用法

const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量1.用于定义常量变量:const int Val = 10; Val = 20; //错误,不可被修改2.const作为形式参数...

_T、TEXT("")和L""的区别

_T是一个宏,作用是让你的程序支持Unicode编码。 1定义编辑 _T("")是一个宏,定义于tchar.h下。[1]  #define __T(x) L ##...

是使用_beginthread 还是 CreateThread !

转自:http://www.cppblog.com/eday/archive/2006/11/25/15648.html
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)