在单片机使用C语言进行编程的时候,经常使用到code。code是keil C51里面的关键字,一般用于定义常量数组,意思是告诉编译说把这个数组放在ROM存储。使用
ROM(程序存储器)的好处是加快读取速度,不占用系统资源。
unsigned char code table[]; 表示分配一个指向code区的指针,指针本身在默认存储区。
code unsigned char table[]; 表示分配一个指向默认存储区的指针,指针本身在code区。
--------------------------------------------------------
0)volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值,在哪里使用,在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步消除死代码。
1)比如 对某值进行连续操作,en = 0; en = 1; en = 0; 本意是让单片机产生一个脉冲什么的,但是有些编译器会认为你
前面两句是废话,直接优化掉。此时应该对en变量用volatile修饰。
2)其值在中断服务函数中修改的,供其它程序检测的变量,需要加volatile
3)多任务环境下,各任务间共享的标志应该加volatle
4)存储器映射的硬件寄存器通常也要加volatile说明
----------------------------------------------------------------------------------
0)static声明变量或函数时,表明只能够在当前文件下调用。
1)能够减少局部变量数据的建立和赋值的开销。
2)降低模块间的耦合度