| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2541 人关注过本帖
标题:[讨论]const和define哪个好?!
取消只看楼主 加入收藏
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
结帖率:74.19%
收藏
 问题点数:0 回复次数:7 
[讨论]const和define哪个好?!

刚看一本C++的书 说现在很多程序员在设置常量时喜欢用const不喜欢用define我对此深表质疑!
书上说用define可能会引起编译上的错误 (其他的什么也没说)
我想知道大家对此有什么感想

搜索更多相关主题的帖子: define const 常量 
2007-01-31 15:12
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

为什么
const是占内存的 而define不占啊

2007-01-31 15:25
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用pinglideyu在2007-1-31 16:21:59的发言:
是这样的:例如 #define Max=200;
虽然宏常量定义和const定义的常量表面上相似,但功能上存在一 定的差别。宏定义的常量是一种纯粹的置换关系,当编译预处理时遇到#define 指令,便以200替代Max,它没有数据类型;而采用const定义的常量具有数据类型特征。定义数据类型的常量便于编译系统进行数据类型检查,使程序可能出现的错误更容易排除。因此与#define相比,const定义常量削除了程序的不安全性。

为了内存我宁可冒危险
从我的经验上说这点危险很容易避免 它的危险程度并不高
在使用复杂一点的宏时注意一下就好了

2007-01-31 16:26
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

我想书上的意思是:如果是少量常量可以用define
大量的为了避免错误应该用const
那你想想 常量越多用const就越占内存了
所以从什么角度来说
我认为都要用define 只要在做宏定义是注意着点就没事

2007-01-31 16:33
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

那就把这个问题放一放
去帮我找找哪有压缩文件的算法去吧

2007-01-31 16:37
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

现在看看别人对这个问题有什么看法

2007-01-31 16:38
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用卧龙孔明在2007-2-2 18:09:55的发言:

各有各的好处,在不同的程序中有不同的选择

我看程序决定不了这个东西
不管说明程序有他们俩个都能达到同样的效果
只是在编程风格问题上存在不同
2007-02-03 11:20
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用ispig在2007-2-5 14:54:37的发言:
对宏的处理,在编译过程中称为“预处理”。也就是说在正式编译前,编译器必须先将代码出现的宏,用其相应的宏值替换,这个过程有点你我在文字处理软件中查找替换。完成预处理后,所有原来的“PAI”都成了立即数3.1415926.所以在代码中使用宏表达常数,归根结底还是使用了立即数,并没有明确指定这个量的类型。这容易带来一些问题。


(转)

明白机理 就可以避免错误的发生

2007-02-06 10:09
快速回复:[讨论]const和define哪个好?!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018688 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved