-1

是否有可能有挥发性标签?像这样的东西:

volatile coroutine:

或者

coroutine volatile:

甚至可能

coroutine: volatile


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

4

2 回答 2

1

限定符的含义volatile在 C 2011 (N1570) 5.1.2.3 6 中规定:“对 volatile 对象的访问严格按照抽象机的规则进行评估……这是程序的可观察行为。”</p>

该规范不适用于标签,因为标签不是对象,也不是可访问的标签。

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

于 2013-10-09T17:38:43.877 回答
0

简短的回答:

更长的答案:标签仅用于指定跳转目标。它们不应保存在寄存器或高速缓存中(所volatile涉及的东西)。

于 2013-10-09T17:12:41.640 回答