什么时候可以通过编译器完成的优化摧毁我的C代码?

什么时候可以通过编译器完成的优化摧毁我的C代码?,第1张

概述编译器完成的优化何时可以使我的C代码出现错误的行为,如果没有执行那些优化,这些行为将不存在?例如,在某些情况下不使用volatile可能导致程序的行为不正确(例如,不从存储器重新读取变量的值,而只读取一次并将其存储在寄存器中).但是,在开启最具侵略性的优化标志之前,还有哪些应该知道的陷阱,然后想知道为什么程序不再工作? 编译器优化不应影响程序的可观察行为,所以在理论上你不用担心.在实践中,如果您的 编译器完成的优化何时可以使我的C代码出现错误的行为,如果没有执行那些优化,这些行为将不存在?例如,在某些情况下不使用volatile可能导致程序的行为不正确(例如,不从存储器重新读取变量的值,而只读取一次并将其存储在寄存器中).但是,在开启最具侵略性的优化标志之前,还有哪些应该知道的陷阱,然后想知道为什么程序不再工作?解决方法 编译器优化不应影响程序的可观察行为,所以在理论上你不用担心.在实践中,如果您的程序陷入未定义的行为,任何事情都可能已经发生,所以如果您的程序在启用优化时中断,那么您只是暴露了现有的错误 – 这并不是破坏它的优化.

一个常见的优化点是返回值优化(RVO)和命名返回值优化(NRVO),其基本上意味着从正在接收它们的对象直接构造的函数中的值返回的对象,而不是复制.这调整构造函数,复制构造函数和析构函数调用的顺序和数量 – 但通常使用这些函数正确写入,行为上仍然没有可观察到的差异.

总结

以上是内存溢出为你收集整理的什么时候可以通过编译器完成的优化摧毁我的C代码?全部内容,希望文章能够帮你解决什么时候可以通过编译器完成的优化摧毁我的C代码?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1253713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存