C语言中Valtile,Const,extern的解释

const::

const可以定义const常量,具有不可变性,Const定义的常量的作用是只读,有些寄存器比如状态寄存器只能是只读状态,所以就定义为const状态

const定义的常量就有不可变性质 

例如:const int Max=100; Max++会产生错误

extern:

extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v

就可以在a.c中声明extern int v,然后就可以引用变量v。这里需要注意的是,

被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到v

不只是取决于在a.c中声明extern int v,还取决于变量v本身是能够被引用到的。

这涉及到c语言的另外一个话题--变量的作用域。能够被其他模块以extern修饰符引用到的变量通常是全局变量。

也就是说:1.extern修饰的变量首先得是全局变量

                    2.extern的作用就是引用别人的变量

volatile

volatile是给编译器的指示来说明对它所修饰的对象不应该执行优化。volatile的作用就是用来进行多线程编程。在单线程中那就是只能起到限制编译器优化的作用。所以单线程的童鞋们就不用浪费精力看下面的了。

简单地说就是防止编译器对代码进行优化.比如如下程序:

1

2

3

4

XBYTE[2]=0x55;

XBYTE[2]=0x56;

XBYTE[2]=0x57;

XBYTE[2]=0x58;

对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条语句进行优化,认为只有XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一的进行编译并产生相应的机器代码(产生四条代码).

总的说就是volatile定义之后,每一条语句都要执行




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值