是否可以将标签(分支目标)标记为 "volatile"以防止其被 GCC 优化触及?

标签 c gcc label volatile

是否可以有 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/

相关文章:

c - 定点: out_Q15 = antilog( in_Q25 ) 计算,避免溢出?

java - java中调用在另一台服务器上运行的C函数的最佳方法是什么?

c - 整理 C++ DLL 函数名称

c - 链接器如何计算 .bss 部分的大小?

python - Tkinter 显示按钮而不是标签

c - 这看起来不像一个函数。这是什么?

gcc - 为什么我们在使用线程编译 C 代码时要写 -D_REENTRANT

c++ - SPARC : How to handle integer doubleword pairs? 的 GCC 内联汇编

c# - 如何增加 ASP.NET 标签中显示的文本中的行间距?

ruby-on-rails - Rails Multi-Tenancy 应用程序的动态 ActiveRecord 模型标记