提示error C2065: “i”: 未声明的标识符

qq_29760443 2017-02-15 10:51:18
/* intHist = computeIntegralHistogramMex(quantMatrix,height,width,prodQuant); computes the integral image of an image with */


#include <math.h>
#include "mex.h"

void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[] )

{
int i,j,k,x1;
double *quantMatrix, *intHist;
int height,width,prodQuant;

/* Check for proper number of arguments */

if (nrhs != 4) {
mexErrMsgTxt("4 input argument required.");
}
else if (nlhs > 1) {
mexErrMsgTxt("Too many output arguments.");
}

if ( !mxIsDouble(prhs[0]) || mxIsComplex(prhs[0]) ||
mxGetNumberOfDimensions(prhs[1]) != 2 )
mexErrMsgTxt("input 1 (quantMatrix) must be a real double matrix");

quantMatrix = mxGetPr(prhs[0]);
height = mxGetScalar(prhs[1]);
width = mxGetScalar(prhs[2]);
prodQuant = mxGetScalar(prhs[3]);

/* Create a matrix for the return argument */

plhs[0] = mxCreateDoubleMatrix(prodQuant,(height+1)*(width+1),mxREAL);/* size of intHist*/

intHist = mxGetPr(plhs[0]);



for(i = 1;i <= height;i++)
for(j = 1;j <= width;j++)
{
x1 = floor(quantMatrix[(j-1)*height+(i-1)]);

intHist[prodQuant*(j*(height+1)+i)+x1-1]=1; /* corresponding bin has value=1 at location (i,j) */

for(k = 0;k < prodQuant;k++)
intHist[prodQuant*(j*(height+1)+i)+k] += intHist[prodQuant*(j*(height+1)+i-1)+k] + intHist[prodQuant*((j-1)*(height+1)+i)+k] - intHist[prodQuant*((j-1)*(height+1)+i-1)+k];
}

return;
}
用Vs2010 提示error C2065: “i”: 未声明的标识符
还有j,k,x1都是
不知道是怎么回事呢
...全文
1662 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pingo520 2017-02-16
  • 打赏
  • 举报
回复
是不是编译器优化掉了,在你定义i,j,k的时候你没有赋初值,而且没有马上用到,有些编译器优化选项会将这些变量优化掉
tianya123443tianya 2017-02-15
  • 打赏
  • 举报
回复
你加这个头文件试试,#include <stdio.h>
幻夢之葉 2017-02-15
  • 打赏
  • 举报
回复
引用 1 楼 hoya5121 的回复:
c++新标准是这样的,必须在for括号内不声明循环变量 for(int i = 0; 这样
没看明白你这个说法
usecf 2017-02-15
  • 打赏
  • 举报
回复
if ( !mxIsDouble(prhs[0]) || mxIsComplex(prhs[0]) || mxGetNumberOfDimensions(prhs[1]) != 2 ) 你这块怎么没有大括号呢,代码写规范,问题才好发现
幻夢之葉 2017-02-15
  • 打赏
  • 举报
回复
调换下头文件顺序?
hoya5121 2017-02-15
  • 打赏
  • 举报
回复
c++新标准是这样的,必须在for括号内不声明循环变量 for(int i = 0; 这样
qq_29760443 2017-02-15
  • 打赏
  • 举报
回复
引用 1 楼 hoya5121 的回复:
c++新标准是这样的,必须在for括号内不声明循环变量 for(int i = 0; 这样
加了 还是不行

64,325

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧