【发布时间】:2013-09-15 10:40:11
【问题描述】:
我有一个复杂的最小二乘拟合程序,我最近正在调试它。我通过将它们 cout 到控制台来调试东西,为了使它更容易,我使用了
using namespace std;
有趣的是,经过数周的编码,我想删除它,因为调试已经完成,令人惊讶的是,删除它会导致结果错误!我在 g++ 和 icpc(intel 编译器)中做了一个完整的抽象检查,我删除并恢复了这个指令,当它被删除时,结果是错误的......
我知道这是一个非常广泛的问题,不容易找到答案,但在这种情况下你会怎么做?您将如何调试这种依赖关系?
【问题讨论】:
-
在
<cmath>中调用任何内容不合格? -
只有
using namespace std是你删除的吗? -
您能否分享实际错误(或)简化代码来产生此问题?
-
对照库名称列表(可以在 C++ 标准草案中找到)检查您自己定义的名称,看看哪里有冲突。如果
using指令从std中提取了某些函数的重载,则可能会发生这种情况,这比你的一个更好的匹配。下一次,改用using std::cout;,好吗? :) -
@SamerAfach “问题是程序很大”:但是您的单元测试应该能够查明行为发生变化的函数。你确实有单元测试,不是吗?
标签: c++ debugging error-handling g++ std