GCC用-O0和-O2给出不同的数值结果

时间:2009-07-02 02:42:31

标签: c optimization gcc numerical

我正在使用4.1.2。有没有人对我的代码中最好的地方有任何想法?有共同原因的经验?有一些丑陋的指针转换(即,d =(double)(*(float *)p),其中p是指向int的指针)我正在努力消除,但还没有运气。
对于它的价值,-O0给出了正确的答案。谢谢你的帮助。

2 个答案:

答案 0 :(得分:7)

我会检查严格的别名问题,如下所示: http://www.cellperformance.com/mike_acton/2006/06/understanding_strict_aliasing.html

如果不确切知道你的代码是做什么的,提到“丑陋的指针强制转换”会让我怀疑存在别名问题。

如果您提供了一些证明问题的代码,那么对您来说会很有帮助,并且让我们更容易回答。

答案 1 :(得分:3)

谢谢大家,-fno-strict-aliasing(由几个人建议)解决了我的问题。谢谢你的帮助。
获得的经验教训:始终使用警告标志进行编译。