经过一些更改后,我在大型应用程序中遇到了浮点异常。我试图评论我的更改,发现当我启用一个简单的函数调用时会发生 FPE。
api::getMaxSize();
它只是返回值。看起来像这样
int api::getMaxSize() { return 536870912; };
这是静态成员函数。当我将其移至头文件时,一切正常。我很困惑,这可能是什么原因?看起来 API 在另一个模块中并作为动态库链接,但这怎么会导致问题呢?
添加
有一个函数 maxBox() 是模板并在api.h
头文件中实现。这个函数调用getMaxSize()
template <typename T>
static rectangle<T> maxBox()
{
return rectangle<T>(
getMinSize(), getMinSize(),
getMaxSize(), getMaxSize()
);
}
这是调用代码
if (!api::maxBox<double>().contains(box * scale)) { /* api::getMaxSize(); */ }
如果我启用 getMaxSize() 调用,程序开始抛出 FPE,但实际上从未调用 getMaxSize()。
添加了
Found FPE in box * scale
,无法理解为什么它在没有getMaxSize()
调用的情况下工作,但是问题已经解决。谢谢大家。
提前致谢。