const和const volatile关键字
2014-01-13 22:05
288 查看
const和const
volatile关键字
const
关键字
关键字“const”,C语言中命名最差的关键字,并不表示恒量,而是代表“只读”。在
嵌入式系统中,有很大的不同,这一会应会明白。
Const声明可用于任何变量,它告诉编译器将其存贮在ROM代码。编译器保留了那个位置
程序存贮器地址。由于位于ROM中,其值不能改变。
由于它作为常量工作,必须赋一初值。如:const double PI = 3.14159265;
Const
变量与明显的常数相对,很多原文要求用const变量代替明显的常数。例如:
用const unsigned char channels = 8;代替#define
CHANNELS 8 。
本方法的基本原理是在调试器内部,你能检查一个const变量,然而一个明显的常数不
可访问。不幸的是,在很多8位机上你将为这一好处付出极大的代价。这两个主要代价是:
•
一些编译器在RAM中创建一个真实的变量来支持cost变量,这是一个极大的惩罚。
•
一些编译器如CodeWarrior,知道变量为const,将把变量存贮在ROM中。无论怎样,
变量仍作为变量处理和访问,典型地用某些变址寻址(16位)的方式。与直接寻址(8位)方
式相比,这种方法通常很慢。
Const的用法:
const unsigned short a;
unsigned short const a;
const unsigned short *a;
unsigned short * const a;
const volatile
关键字
现在讨论一个深奥的问题,一个变量既能是常量,又能是可变量吗?如果是这样,这意
味什么,怎样使用?答案是“能”。
这个修饰符应该用于能出乎意料地改变的任何存贮器位置,因此需要volatile限定语,
由于const该变量是只读的。
最明显的例子是硬件状态寄存器,象SCI状态寄存器SCS1。这个寄存器包含信号状态标志,
如发送空、发送完成、接收满以及其它。这是一个可变寄存器由于这些标志的改变依赖于串行
通信的状态,这也是只读,由于标志不能被程序直接改写,它们只对模块的状态作出响应。
这个状态寄存器最佳声明方法是:
const volatile unsigned char SCS1 @0x0016
const和const
volatile关键字
const
关键字
关键字“const”,C语言中命名最差的关键字,并不表示恒量,而是代表“只读”。在
嵌入式系统中,有很大的不同,这一会应会明白。
Const声明可用于任何变量,它告诉编译器将其存贮在ROM代码。编译器保留了那个位置
程序存贮器地址。由于位于ROM中,其值不能改变。
由于它作为常量工作,必须赋一初值。如:const double PI = 3.14159265;
Const
变量与明显的常数相对,很多原文要求用const变量代替明显的常数。例如:
用const unsigned char channels = 8;代替#define
CHANNELS 8 。
本方法的基本原理是在调试器内部,你能检查一个const变量,然而一个明显的常数不
可访问。不幸的是,在很多8位机上你将为这一好处付出极大的代价。这两个主要代价是:
•
一些编译器在RAM中创建一个真实的变量来支持cost变量,这是一个极大的惩罚。
•
一些编译器如CodeWarrior,知道变量为const,将把变量存贮在ROM中。无论怎样,
变量仍作为变量处理和访问,典型地用某些变址寻址(16位)的方式。与直接寻址(8位)方
式相比,这种方法通常很慢。
Const的用法:
const unsigned short a;
unsigned short const a;
const unsigned short *a;
unsigned short * const a;
const volatile
关键字
现在讨论一个深奥的问题,一个变量既能是常量,又能是可变量吗?如果是这样,这意
味什么,怎样使用?答案是“能”。
这个修饰符应该用于能出乎意料地改变的任何存贮器位置,因此需要volatile限定语,
由于const该变量是只读的。
最明显的例子是硬件状态寄存器,象SCI状态寄存器SCS1。这个寄存器包含信号状态标志,
如发送空、发送完成、接收满以及其它。这是一个可变寄存器由于这些标志的改变依赖于串行
通信的状态,这也是只读,由于标志不能被程序直接改写,它们只对模块的状态作出响应。
这个状态寄存器最佳声明方法是:
const volatile unsigned char SCS1 @0x0016
相关文章推荐
- const与volatile关键字的用法
- 关键字:auto、static、register、const、volatile 、extern 总结
- C++基本功:全面掌握const、volatile和mutable关键字
- 转:关键字Const和Volatile的使用
- 关键字:auto、static、register、const、volatile 、extern 总结【转贴】
- 关键字Const与Volatile的使用
- C语言中关键字const、static、volatile的用法分析
- 几个常见关键字auto,overlay,static,register,const,volatile,extern
- 关键字static,const,volatile
- 区分const,static,readonly,volatile四个关键字
- 关键字:auto、static、register、const、volatile 、extern 总结
- C++基本功:全面掌握const、volatile和mutable关键字
- 关键字static、Const、Volatile的作用是什么
- 【C语言复习(一)】auto、static、register、const、volatile关键字的分析
- 几个关键字static & const & volatile
- 关键字extern、volatile、const、static
- 谈谈以下关键字的作用auto static register const volatile extern
- 关键字的作用 static,extern,const,volatile,register,inline
- 说明以下关键字的作用 auto static register const volatile extern
- 关键字:auto、static、register、const、volatile 、extern 总结