如果我有:
struct whatever {
int data;
};
volatile whatever test;
will
test.data
也会波动吗?
可以提出另一个问题(或者只是用另一种方式来看待原始问题):
是否制作一个结构体const
使其所有成员const
?
如果我有:
struct whatever { int data; };
const whatever test;
test.data 会是const
too?
我的回答是:是的。如果你声明一个类型的对象whatever
with const
那么它的所有成员都会const
too
类似地,如果你声明一个类型的对象whatever
with volatile
那么它的所有成员都会volatile
太,就像你声明对象一样const
,它的所有成员都将是const
too.
const
and volatile
是同一枚硬币的两个面;因此标准经常将它们称为cv-qualifiers
.
引自标准 ($7.1.5.1/8)
[注:挥发性是一个提示
执行以避免攻击性
优化涉及对象因为对象的价值可能
通过无法检测到的方式进行更改
执行。详细见1.9
语义。一般来说,语义
挥发性的目的是
C++ 中与 C 中相同。]
这意味着,如果您的对象是结构体的实例,那么编译器不能避免涉及对象的激进优化, unless它避免了对其每个成员的积极优化。 (否则,它如何避免涉及对象的优化?)
相关主题:
为什么我们在 C++ 中使用 volatile 关键字? https://stackoverflow.com/questions/4437527/why-do-we-use-volatile-keyword-in-c/4437555#4437555
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)