关于 define 和const 的问题

小生在写cuda程序时 遇到的一个问题就是:

#define const 有疑问

到底哪个执行的速度更加快一些呢?

 

下面是我看了很多的评论后得到的答案:

 

#define 一般来说用于 字符串[string] 数字的 替代 ,默认区分大小写

 我们将这个# define又称 做宏  ,所有叫做宏的都有一个特点就是,它是在预处理时的文本替换,替换了之后呢,相当于一个变量,(当然,它和变量还有很大的区别的,因为它根本就不占空间)

 

#define num 23  并不存在一个和num相关联的空间

 

Const就是定义一个变量,它分配一个空间,在编译时如果有其它操作改变它,编译器就不会同意的。度过编译期,它就和普通的变量没有任何区别了,也有自己的空间。
当然,如果经过编译器优化的话,也许二者真就没有什么太大区别了。

 

所以,二者的区别主要在于,最后存放数字的空间不一样的问题:const是分配一个空间用
define是给某个值取一个别名;一个是宏的定义 而另个是常量的定义

 

有的人建议:

最好用const定义常量,:
const float PI=3.1415927
而不要用:
#define PI 3.1415927
正如上面所说,分配的空间不同,但编译器不回对此进行优化.

 

我自己还没有实践过,所以也不是很清楚。

 

 

 

posted @ 2012-07-25 15:50  喜欢阿亮的小水  阅读(216)  评论(0编辑  收藏  举报