关于 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
正如上面所说,分配的空间不同,但编译器不回对此进行优化.
我自己还没有实践过,所以也不是很清楚。