c++ - “void *”类型的值不能分配给“double *”类型的实体
问题描述
我无法编写一个必须使用梯形方法计算积分的 OpenMP 程序。
编译器对这些行尖叫:
x = calloc(n, sizeof(double));
y = calloc(n, sizeof(double));
错误 - “void *”类型的值不能分配给“double *”类型的实体
我正在使用 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)));
推荐阅读
- ios - 无法从警报完成中弹出导航控制器:
- elasticsearch - 添加更多节点(或节点丢失)后未分配主分片
- constructor - 具有继承的单类构造函数的正确语法
- python - python groupby 语句只留下聚合字段
- php - 如何仅使用一条消息发送消息列表
- css - 如何使用 Vue b-tab CSS 样式覆盖 Bootstrap?
- javascript - Vuetify 轮播图像未缩放到视口
- git - 具有截断历史的第二个远程回购策略
- visual-foxpro - 使用“独占使用”的 Visual Foxpro“正在使用的文件”
- php - 我想找到所有 A Href 并获得他们的链接和他们的全部内容