我想在Matlab中运行一个c ++代码,在我的代码中我有这个
int max=(int)*mxGetPr(prhs[0]);
double a[max];
但是当我使用mex时会出现这些错误
错误C2057:预期的常量表达
错误C2466:无法分配常量大小为0的数组
'a':未知大小
全部为第2行,我只收到此文件的错误,(我可以使用mex示例代码)
我知道如何解决它吗?
答案 0 :(得分:1)
问题是max
不是常量表达式(或者,至少没有标记为常量)。要使第二行起作用,必须使max
为常量,因为在执行之前必须知道数组的内存占用(数组在堆栈上分配)。如果您不知道尺寸,则需要使用类似的东西
double *a = mxCalloc(max, sizeof(double));
然后在堆上分配一块内存,允许使用动态大小。