const 的变量是否可以改变?

[复制链接]
2112|8
 楼主| johnliu2000 发表于 2013-7-17 11:04 | 显示全部楼层 |阅读模式
ST, ui, ge, ic, tc
最近开到一个代码,const 变量定义在一个函数内,但是却可以赋予新值,const变量不是不可以更新的吗?为什么这里要用const 变量?
#define ID_MASK=0x00ff;
satic led_manage(uint8 id )
{
    const uint8 realId =id &  ID_MASK;
    switch(realId )
    {
......

    }

}
soso 发表于 2013-7-17 11:32 | 显示全部楼层
const是常量,不可改变,从上面代码没看出哪里改变了它
原野之狼 发表于 2013-7-17 12:29 | 显示全部楼层
这个用法不是更新  是初始化
ayb_ice 发表于 2013-7-17 13:36 | 显示全部楼层
那是初始化,不是改变,如果初始化都不行,那还有什么用呢

outstanding 发表于 2013-7-17 14:04 | 显示全部楼层
是初始化赋值啊,不希望被改变啊,
refee 发表于 2013-7-17 15:14 | 显示全部楼层
这里是初始化realId呀 楼主可参考
http://baike.baidu.com/view/1065598.htm
airwill 发表于 2013-7-17 16:28 | 显示全部楼层
const 其实只是个编译指令(属性定义).
当然有很多编译器会将 const 变量分配在 ROM 中. 那就真没有办法改变了.
但是象 冯 体现的处理器(如 x86) 有的是改变它的办法
 楼主| johnliu2000 发表于 2013-7-17 18:08 | 显示全部楼层
谢谢各位达人,原来是初始化时赋予初值,而不是更新。

那么这个const是放在 静态变量里吧?
sunhq02 发表于 2013-7-18 09:21 | 显示全部楼层
const和静态没关系
const仅仅是在语法检查上保证不被改写
也就是说,const仅仅是在编译的时候,编译器会检查语法上有没有改写它
编译完了之后,const没有什么有力的保证
除非const变量在物理上被放在rom里面了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部