不能将 "void *" 类型的值分配给类型 "double *" 的实体



我在编写一个OpenMP程序时失败了,该程序必须使用梯形方法计算积分。

编译器对着这些行尖叫:

x = calloc(n, sizeof(double));
y = calloc(n, sizeof(double));

错误-类型为"的值;void*";无法分配给的实体类型";双*";

我使用的是Visual Studio 15,是的,我在属性中启用了OpenMP支持。

以下是导致错误的程序部分:

#define N 4
double start_time, end_time, time;
float f(float x)
{
return(pow(x, 3));
}
void main() {
start_time = omp_get_wtime();
int i, n;  double *x, *y;
double x0, xn, h, so, ans;
x0 = 0;
xn = 2;
h = 0.1;
n = (xn - x0) / h;
if (n % 2 == 1)
{
n = n + 1;
}
x = calloc(n, sizeof(double));
y = calloc(n, sizeof(double));

错误消息很清楚,解决方法也很简单。您需要显式强制转换C++中calloc的返回值(与C不同(。也就是说,如果你真的需要使用这样的";基于C的";C++中的例程。。。

x = static_cast<double*>(calloc(n, sizeof(double)));
y = static_cast<double*>(calloc(n, sizeof(double)));

最新更新