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定义之后,每一条语句都要执行