C 编译器是否有义务在内存中放置一个静态常量?

mrn*_*mrn 3 c c++

C 编译器是否有义务在内存中放置一个静态常量变量,或者是否允许在引用时将其用作立即指令操作数?

tof*_*fro 5

不,只要你不告诉它,它就不会。它可以很好地将常量用作汇编指令中的文字(立即数)值。

否则可能是

  • 声明常量volatile(告诉编译器:“我们不会改变它,但其他人可以”)
  • 声明和/或使用 ie 取消引用一个const不是明确的指针const

  • “将`const` 转换为程序中某处的非`const`”并不是说明情况的一个例子。如果它导致尝试修改对象,则行为只是未定义。编译器没有义务允许或支持它,许多人没有义务通过将对象放置在只读存储器部分中。 (4认同)