我的iPhone应用程序遇到了烦人的问题.每当我将优化级别设置为"无"以外的其他级别时,我就会遇到计算错误.这只发生在为iPhone SDK构建时(iPhone模拟器总是很好).
我不介意在发布模式下禁用优化,但是当我这样做时应用程序有点太慢了.
应用程序很复杂,因此很难找到过于积极优化的部件.
我认为问题出在GCC方面,因为它似乎在优化ARM体系结构的代码时遇到了问题.
有没有办法只禁用代码的某些部分的优化?你会如何处理这类问题?
是的,这完全有可能.GCC有一个属性:
/* disable optimization for this function */ void my_function(void) __attribute__((optimize(0))); void my_function(void) { /* ... */ }
将该函数的优化级别设置为-O0
.您可以启用/禁用特定优化:
/* disable optimization for this function */ void my_function(void) __attribute__((optimize("no-inline-functions"))); void my_function(void) { /* ... */ }