我正在尝试使用一个开源的R树,但是我得到了错误。我花了几个小时来修复它,但没能解决。请帮帮忙。代码部分如下:
#include <stdio.h>
#include <math.h>
#ifndef M_PI
# define M_PI 3.1415926535
#endif
#ifndef ABS
# define ABS(a) ((a) > 0 ? (a) : -(a))
#endif
#define EP .0000000001
const double log_pi = log(M_PI);
double sphere_volume(double dimension)
{
double log_gamma, log_volume;
log_gamma = gamma(dimension/2.0 + 1);
log_volume = dimension/2.0 * log_pi - log_gamma;
return exp(log_volume);
}我得到以下错误: 1>c:\users\user\desktop\r\gammavol.c(14):错误C2099:初始化器不是常量1>c:\users\user\desktop\r\gammavol.c(21):警告C4013:'gamma‘未定义;假设外部返回整数
第14行是常量双倍对数= log_pi (M_PI);第21行是log_gamma =gamma(尺寸/2.0+ 1);
提前感谢
发布于 2013-11-09 21:17:08
这一行是导致第一个错误的原因:
const double log_pi = log(M_PI);表达式log(M_PI)不是常量,不能在初始化中使用。或者改用以下代码,或者在main函数中移动定义并删除const
const double log_pi = 1.1447298858494002;第二个错误是因为编译器找不到函数gamma。它似乎没有在您的math.h中定义。如果你没有收到链接器错误,我建议你添加:
double gamma (double);正确的做法是找到要包含的正确的头文件。This question可能会带来一些启示。
https://stackoverflow.com/questions/19876243
复制相似问题