关于#define和const定义常量的区别?

时间:2022-09-22 20:23:34
(1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。

(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
请大家发表自己的看法,到底用哪种好?还是分场合使用?谢谢!!!

5 个解决方案

#1


const常量是实际存在的变量,而宏常量只在未编译前存在,当编译后就已经被替换掉了,当然不存在调试的问题了。

#2


用const常量
出现数据类型的问题
编译器会帮你查出来的
所以用const常量更好一些

#3


const定义常量好,
#define 尽量用在编译前必须的一些定义上。

#4


const不能用在编译前必须的一些定义上吗?

#5


楼主很明白吗?

const 从某种意义上就是来替代#define的!
不过,楼上兄台说的有句不全:


const常量是实际存在的变量,而宏常量只在未编译前存在,当编译后就已经被替换掉了,当然不存在调试的问题了。
??????/////

这句话我觉得不托吧!

好像以前记得:

用COSNT来声明的是一个常量,没有必要分配内存空间,只要在符号表里记录,编译时,从符号表里取出!

不过,楼上兄说的也有道理!

期待楼下兄,为我们做一个好的总结!

#1


const常量是实际存在的变量,而宏常量只在未编译前存在,当编译后就已经被替换掉了,当然不存在调试的问题了。

#2


用const常量
出现数据类型的问题
编译器会帮你查出来的
所以用const常量更好一些

#3


const定义常量好,
#define 尽量用在编译前必须的一些定义上。

#4


const不能用在编译前必须的一些定义上吗?

#5


楼主很明白吗?

const 从某种意义上就是来替代#define的!
不过,楼上兄台说的有句不全:


const常量是实际存在的变量,而宏常量只在未编译前存在,当编译后就已经被替换掉了,当然不存在调试的问题了。
??????/////

这句话我觉得不托吧!

好像以前记得:

用COSNT来声明的是一个常量,没有必要分配内存空间,只要在符号表里记录,编译时,从符号表里取出!

不过,楼上兄说的也有道理!

期待楼下兄,为我们做一个好的总结!