‘ifinite’ не был объявлен в этой области

Я пытаюсь собрать сёгун инструментарий, и я получаю эту ошибку

    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. Есть идеи, что это может быть?

2

Решение

Функция 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,

2

Другие решения

Я только что скачал 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
}

Если ошибки и исходный текст, который вы ввели в вопрос, верны, возможно, ваши источники были повреждены. Вы должны скачать исходный код и попробовать еще раз.

2

По вопросам рекламы [email protected]