我正面临 Visual C++ 编译器优化的奇怪情况。
在一个相当中等大小的 c++ 代码中,包含 10 个静态库,如果代码在优化为 On(/O1、/O2 或 /Ox)的情况下编译,则程序的运行会产生正确的输出。
但是,使用 /Od 时,程序会产生错误的输出。
我知道这个问题非常笼统,但我很欣赏任何线索可能是什么原因,或者它可能与什么相关联。
ps代码正在做有限元数值,很多浮点运算。ps 代码在 Visual Studio 2010 中。
编辑:代码的示例输出:
r(残差)的差异相当大
一、无优化:
Solver. time: 0.12, iteration: 1
Solver.
------------------------------------
determining values:
dg. 0
limit of dg. 0.897278
dr. 7675.3
limit of dr. 45.3704
r. 7675.3
limit of r. 453.704
dx. 0.122164
limit of dx. 8.97278e-005
------------------------------------
二、优化:
Solver. time: 0.12, iteration: 1
Solver.
------------------------------------
determining values:
dg. 0
limit of dg. 0.897278
dr. 5894.53
limit of dr. 45.3704
r. 5894.53
limit of r. 453.704
dx. 0.122164
limit of dx. 8.97278e-005
------------------------------------
ps我无法提供代码本身的示例,bcs确实不知道问题出在代码的哪里。