volatile static int i;
和
static volatile int i;
两者有什么区别?编译器如何看待这个?
答案 0 :(得分:3)
订单无关紧要。 static
是存储时长。
6.2.4对象的存储持续时间
3标识符为的对象 用外部或内部声明 联系,或与存储类 说明符static具有静态存储 持续时间。它的一生就是整个 程序的执行及其执行 存储值只初始化一次, 在程序启动之前。
和
6.7.3类型限定符
具有volatile限定类型的对象可能会以未知的方式进行修改 实施或有其他未知的副作用。因此任何表达都是指 对这样的对象应严格按照抽象机的规则进行评估, 如5.1.2.3中所述。此外,在每个序列点上最后存储的值 对象应与抽象机器规定的内容一致,除非经过修改 前面提到的未知因素.14)什么构成了对象的访问 volatile的限定类型是实现定义的。
答案 1 :(得分:2)
没有区别,您可以按任意顺序指定它们。
答案 2 :(得分:1)
两者意味着相同
Wikepedia为您提供相关信息 http://en.wikipedia.org/wiki/Volatile_variable
答案 3 :(得分:1)
在您的示例中,顺序无关紧要,但以下内容也有效
static int volatile i;
表示订单一般是相关的,因为您无法将static
放在int
之后。 static
限定变量,volatile
和const
限定类型。