我正在Linux环境下为ARM编写程序。它\xe2\x80\x99s不是一个低级程序,比如说在应用程序级别。
\n以下有什么区别?
\nint iData;
与
\nvolatile int iData;
它有特定于硬件的影响吗?
\n基本上,volatile告诉编译器“这里的值可能会被该程序外部的东西改变”。
当您(例如)处理经常“自行”更改的硬件寄存器时,或者将数据传递到中断或从中断传递数据时,它非常有用。
关键是它告诉编译器,C 代码中变量的每次访问都必须生成对相关地址的“真实”访问,它不能被缓冲或保存在寄存器中,因为那样你就不会“看到”外部各方所做的更改。
对于常规应用程序级代码,volatile永远不需要,除非(当然)您正在与低级别的东西进行交互。
| 归档时间: |
|
| 查看次数: |
5180 次 |
| 最近记录: |