静态和易失性关键字的顺序是否重要?

时间:2010-08-18 05:33:34

标签: c

volatile static int i; 

static volatile int i;  

两者有什么区别?编译器如何看待这个?

4 个答案:

答案 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限定变量,volatileconst限定类型。