У меня исключение с плавающей запятой в огромном приложении после некоторых изменений. Я попытался прокомментировать свои изменения и обнаружил, что FPE происходит, когда я включаю один простой вызов функции.
api::getMaxSize();
, который просто возвращает значение.
выглядит так
int api::getMaxSize() { return 536870912; };
Это статическая функция-член. Когда я перемещаю это в заголовочный файл все работает нормально
Я запутался, в чем может быть резон? Похоже, API находится в другом модуле и связан как динамическая библиотека, но как это может вызвать проблемы?
1010 * добавлены *
Существует функция 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 () фактически никогда не вызывается.
добавлен
Нашел FPE в box * scale
, не могу понять, почему он работал без вызова getMaxSize()
, но проблема решена. Спасибо всем.
Заранее спасибо.