求救!stm32固件库中几个变量的区别。
volatile unsigned long vu32;
volatile unsigned long const vuc32;
unsigned long const uc32;
这几个变量有什么区别?是不是第一个是在程序运行中能变化的、第二个是可重新赋值、第三个是一个常量。这样理解对吗?求大虾们多多指教!!!
[解决办法]
按字面上去看,应该是你说的那样。
[解决办法]
楼主,是这样的。
第一个: volatile 表示易变的,其实是提醒编译器它后面定义的 vu32 是随时随地都有可能变化的量,防止编译器优化它,读取vu32 会从它的直接地址读取, 否则的话,编译器可能会优化程序,移位CPU速度太快, 所以经常会读取寄存器的内容而不是再次访问存储器,这样的,如果多个程序同时使用 vu32, 则可能出现上下文中它的值不一致的情况。
第二个: const 保护 vuc32, 防止它被更改。
第三个: 就是直接定义了一个const 而已,是最常见的用法。
其中, volatile 好像在系统级编程,嵌入式编程中比较常用啊。
希望能帮到楼主~~~~
[解决办法]
楼主看一下volatile和const关键字的介绍吧