Я пытаюсь собрать сёгун инструментарий, и я получаю эту ошибку
C:/shogun-3.0.0/shogun-3.0.0/src/shogun/../shogun/mathematics/Math.h: In static
member function 'static int shogun::CMath::is_finite(double)':
C:/shogun-3.0.0/shogun-3.0.0/src/shogun/../shogun/mathematics/Math.h:1255:20: er
ror: 'ifinite' was not declared in this scope
return ifinite(f);
Сама функция выглядит следующим образом.
inline static int is_finite(double)
{
#if defined(isfinite) && !defined(SUNOS)
return ifinite(f);
#else
return finite(f);
#endif
}
Я считаю, что подобное описано здесь: http://www.alecjacobson.com/weblog/?p=1768, но я не уверен, так как я не включаю cmath. Есть идеи, что это может быть?
Функция isfinite
не ifinite
,
Вы не включаете <cmath>
но по словам источника сёгуна Вот, это включает в себя как <cmath>
а также <math.h>
в неправильном порядке:
#include <shogun/base/SGObject.h>
#include <shogun/lib/common.h>
#include <cmath> <<<<<<
#include <shogun/mathematics/Math.h>
#include <shogun/mathematics/lapack.h>
#include <shogun/io/SGIO.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h> <<<<<<
Так что вы должны использовать std::isfinite
,
Я только что скачал shogun-3.0.0 с Вот, и нигде в источнике не встречается строка «ifinite». Определение is_finite
в Math.h
является:
/// checks whether a float is finite
inline static int is_finite(double f)
{
#if defined(isfinite) && !defined(SUNOS)
return isfinite(f);
#else
return finite(f);
#endif
}
Если ошибки и исходный текст, который вы ввели в вопрос, верны, возможно, ваши источники были повреждены. Вы должны скачать исходный код и попробовать еще раз.