我正在尝试编译幕府工具箱,我得到了这个错误
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。你知道它会是什么吗?
发布于 2013-11-21 21:32:18
函数是isfinite,而不是ifinite。
你没有包括<cmath>,但根据幕府来源here的说法,它确实以错误的顺序包括了<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。
发布于 2013-11-21 23:20:16
我刚刚从here下载了幕府将军-3.0.0,在源代码中没有出现字符串“ifinite”。Math.h中is_finite的定义是:
/// 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
}如果您在问题中输入的错误和源文本是正确的,则可能是您的源已损坏。您应该下载源代码,然后重试。
https://stackoverflow.com/questions/20122267
复制相似问题