宏定义中是使用 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 进行宏定义。

相关文章推荐

宏定义define使用整理

  • 2014年04月01日 13:08
  • 71KB
  • 下载

C/C++: const常量与define宏定义的区别

Link: http://blog.csdn.net/love_gaohz/article/details/7567856 (1) 编译器处理方式不同   define宏是在...

C++学习4:宏定义#define与常量const

今天在看C++ Primer Plus时,看到其中说到常量定义时,使用const要优于#define,解释的有些模糊,从网上找到了资料来详细的学习一下。这位大神总结的很好,一起膜拜学习。 http:...

const常量与define宏定义的区别

(1) 编译器处理方式不同   define宏是在预处理阶段展开。   const常量是编译运行阶段使用。 (2) 类型和安全检查不同   define宏没有类型,不做任何类型检查,仅仅是展开。   ...

C++基础:#define宏定义和inline,const,enum的区别

#defind 宏定义函数 和 inline 函数的区别: 宏看起来像函数,但不会招致函数调用带了的额外开销。 1.inline函数可运行调式,宏定义函数不能调试 2.inline函数进行...
  • wjxxaut
  • wjxxaut
  • 2016年08月04日 13:58
  • 240

#define宏定义的使用

预处理,其实我们很熟悉   在前面各章中,已多次使用过以“#”号开头的预处理命令。 如包含命令#include ,宏定义命令#define PI3.1415926等。 在源程序中这些命令都放在函数之外...
  • hadoopX
  • hadoopX
  • 2013年08月04日 11:24
  • 563

C++中如何更好使用宏定义#define

首先我们需要明确一点,在c++中不提倡使用宏。我们可以使用const代替,来定义一般的常量。对于一些函数,可以考虑inline关键字,可以达到同样的高效率。 1.为什么c++中不提倡使用宏呢?  ...

宏定义#define的使用

在代码中使用宏定义比较方便,提高程序的运行效率,增加健壮性和方便性。...

#define 宏定义的使用方法详解

#define 宏定义的使用方法详解 //  /P /EP查看.I文件,预编译之后的结果 一、#define的基本用法 1 #define命令剖析 1.1   #d...

四、define宏定义和const常量定义之间的区别

define部分: 宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段。(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议。)   宏的语法为:   #define 宏名称宏...
  • fsqcy
  • fsqcy
  • 2015年05月17日 22:24
  • 229
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:宏定义中是使用 const 还是 使用 define
举报原因:
原因补充:

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