挥发性标签?

时间:2013-10-09 17:07:48

标签: c gcc label volatile

是否可以使用挥发性标签?像这样:

volatile coroutine:

coroutine volatile:

或者甚至

coroutine: volatile


我想要一个不会被优化触及的标签。那可能吗? GCC扩展是可以接受的。

2 个答案:

答案 0 :(得分:1)

volatile限定符的含义在C 2011(N1570)5.1.2.3中指定6:“严格按照抽象机的规则评估对易失性对象的访问。这是可观察到的行为。该计划。“

此规范不适用于标签,因为标签不是对象,也不是标签。

理论上,语言可以扩展,以便volatile可以应用于标签。要做到这一点,您需要指定它的含义。说它意味着“不被编译器优化篡改”是不够的,因为它不清楚,使用未定义的术语(“篡改”),并使用不适用的术语(C标准适用于C实现,而不适用于编译器。单词“编译器“甚至没有出现在标准的规范部分。”。

答案 1 :(得分:0)

简短回答:

更长的答案:标签只用于指定跳转目标。它们不应保存在寄存器或高速缓冲存储器中(涉及volatile的事物)。