单片机中volatile关键字的使用有何特殊之处?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2025个文字,预计阅读时间需要9分钟。
0+1、概述、定义为volatile的变量意味着该变量可能被意想不到地改变,因此编译器不会假设这个变量的值。精确地说,优化器在用到这个变量时,必须每次都小心地重新读取它的值。
01、简述一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。
简单来说,如果这变量很重要,且你不想它被编译器优化,就用volatile修饰。
02、用处关于编译器优化
如果你在编译器器开了优化,那么就要小心了。以下代码使用IAR7.20,优化等级High,选Balanced。
本文共计2025个文字,预计阅读时间需要9分钟。
0+1、概述、定义为volatile的变量意味着该变量可能被意想不到地改变,因此编译器不会假设这个变量的值。精确地说,优化器在用到这个变量时,必须每次都小心地重新读取它的值。
01、简述一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。
简单来说,如果这变量很重要,且你不想它被编译器优化,就用volatile修饰。
02、用处关于编译器优化
如果你在编译器器开了优化,那么就要小心了。以下代码使用IAR7.20,优化等级High,选Balanced。

