• 6990阅读
  • 4回复

Qt的编译方式不同带来结果不同?! [复制链接]

上一主题 下一主题
离线xiaochunz
 

只看楼主 倒序阅读 楼主  发表于: 2008-12-26
Qt的编译方式不同带来结果不同?!
— 本帖被 XChinux 执行加亮操作(2008-12-28) —
我用qdevelop在windows下编写Qt4程序

有个某个变量经过FFT、加减、乘方等一系列运算,用debug方式编译运行,得到结果5.2304

而同样代码,用release方式编译运行,得到结果4.043.

为什么???有人碰到类似情况吗?

谢谢!!!
离线XChinux

只看该作者 1楼 发表于: 2008-12-27
关注
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线xiaochunz

只看该作者 2楼 发表于: 2008-12-27
我反复测试,未做任何修改,两种编译后,确实结果不同
对了,编译环境是Dev-Cpp
离线wd007

只看该作者 3楼 发表于: 2008-12-27
没有试过,关注
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线xiaochunz

只看该作者 4楼 发表于: 2008-12-28
找到可能的原因了!
struct Harmonic {
    double harmonic[50];
   
}g_squ[6][8];

因为我每次循环要处理8路信号得到50次谐波数据,共处理6次后取平均值。
因此就定义了如上的全局变量,但在.h文件extern时,误写为

extern struct Harmonic {
  double harmonic[50];   
}g_squ[6][50]

之所以debug与release不同,我想可能是release对代码的优化、检测改变了代码。

但根本上还糊涂,因为误定义的数组更大而不是更小,代码里不可能有越界之类的错误,

怎么会造成结果不同呢?

发现这个错误改后,本认为对所提现象无关。不过,还好,现在debug与release结果一致了

随便问下,我感觉自己定义的数据struct结构很累赘,想过要改为
struct Harmonic {
    double harmonic[8][50];
   
}g_squ[6];  但感觉差不多

哪位有更好的建议?谢谢!

让大家误跟我也迷惑了一阵,其实是个低级错误,抱歉!
快速回复
限100 字节
 
上一个 下一个