如何将结构的特定成员声明为volatile?在C中,你如何声明一个结构的成员是不稳定的?
16
A
回答
25
完全一样非struct
字段:
#include <stdio.h>
int main (int c, char *v[]) {
struct _a {
int a1;
volatile int a2;
int a3;
} a;
a.a1 = 1;
a.a2 = 2;
a.a3 = 3;
return 0;
}
可以通过使用"volatile struct _a {...}"
标记整个struct
挥发性但上述方法是用于各个字段。
9
应该是相当直截了当根据this文章:
最后,如果你申请挥发到 结构或联合的全部内容的结构/联合的 是挥发性。如果 您不想要这种行为,那么您可以将 将volatile限定符应用于 结构/联合的 个别成员。
1
只是关于C/C++ volatile关键字的警告。
除非你知道你在做什么,你不应该使用它。
C/C++挥发性!=的Java/C#挥发性
震荡线程代码不会帮助,除非你真的知道自己在做什么,你需要使用的C++ 0x原子模板(或类似的东西)。
我唯一不得不使用volatile的是控制硬件寄存器。
0
如果由于服务某些中断(即信号处理程序或其他(接近)原子变量)而声明为volatile的成员未发生更改,那么您应该不使用volatile(因为大多数编译器会将其优化掉)足够接近)。
否则,正如其他人所说..只是用那么它检查ASM转储,看看你的编译器实际上与你:)
在某些情况下,即同意GCC的某些版本..它值得一试的转储。
相关问题
- 1. 无法在c中的结构中声明结构成员
- 2. 声明结构的一个类的成员阵列(C++ 98)
- 3. 看不到一个声明为空的结构的成员
- 4. 如何声明一个结构,其中只有一些成员可以使用另一个结构中的值?
- 5. 如何设置一个结构的特定成员,在C#
- 6. 如何声明一个不会生成警告的结构?
- 7. 不稳定的bash声明
- 8. 如何在c中声明结构?
- 9. C中的结构声明
- 10. C中的结构声明
- 11. 声明模板类中的结构,未定义成员函数
- 12. 在C中声明结构
- 13. 你可以在声明另一个成员时使用sizeof一个成员吗?
- 14. 在一个C结构中的一个TCHAR成员 - 如何动态分配成员和结构数组?
- 15. 声明在C++中的成员函数
- 16. PHP如何声明一个类成员?
- 17. C++结构定义 - 如何在构造函数中定义一个具有单个参数的成员结构
- 18. 如何声明包含Queue成员的动态数组结构?
- 19. C,结构的第一个成员
- 20. C结构声明
- 21. 我该如何声明一个结构?
- 22. 如何在编译时声明一个函数是特定类的成员
- 23. ro如何声明一个成员是指向函数的成员
- 24. 是否有效的C声明一个结构并定义{}中包含的值?
- 25. 如何在C++中的类中声明一个字符串成员
- 26. 如何声明一个朋友是C++中另一个尚未定义的类的成员函数?
- 27. 如何访问一个指向另一个结构中声明的结构?
- 28. 在C#中声明一个类或结构内的方法#
- 29. 声明一个类/结构
- 30. 声明一个结构栈
我认为你已经说过比严格需要强一点。 volatile对线程代码有帮助,特别是在单核心嵌入式平台上。但是你必须知道如何使用它。在使用或不使用DMA的情况下引用硬件寄存器时,它也是有效的强制措施,特别是要查询状态的寄存器。还有必要了解您的缓存以及如何正确管理缓存,并了解如何在您的平台上执行原子操作。 – RBerteig 2009-06-11 08:31:42