是否可以有 volatile 标签?像这样的事情:
volatile coroutine:
或
coroutine volatile:
或者甚至
coroutine: volatile
我想要一个不会受到优化影响的标签。那可能吗? GCC 扩展是可以接受的。
最佳答案
C 2011 (N1570) 5.1.2.3 6 中规定了 volatile
限定符的含义:“对 volatile 对象的访问严格按照抽象机的规则进行评估。...这是程序的可观察行为。”
此规范不适用于标签,因为标签不是对象,也不能访问标签。
理论上,可以扩展该语言,以便 volatile
可以应用于标签。为此,您需要指定它的含义。说它意味着“不会被编译器优化篡改”是不够的,因为它不清楚,使用未定义的术语(“篡改”),并且使用不适用的术语(C 标准适用于 C 实现,而不是编译器。“编译器”甚至没有出现在标准的规范部分。)。
关于是否可以将标签(分支目标)标记为 "volatile"以防止其被 GCC 优化触及?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19278400/