读书人

为什么已经定义了i之后还会说i是未

发布时间: 2013-11-08 17:52:14 作者: rapoo

求助,为什么已经定义了i之后,还会说i是未声明的标识符?
我下载的C++自动生成word报告文档的代码(感谢a7777700000的资源),调试之后,总会报错如下图
,为什么已经定义了i之后,还会说i是未声明的标识符

代码如下:

void table1()
{
sqlstr="USE report_generator;";
mysql_query(&mydata,sqlstr.c_str());
sqlstr="SELECT * FROM template_statistics;";
MYSQL_RES *result = NULL;
if(0==mysql_query(&mydata,sqlstr.c_str()))
{
result = mysql_store_result(&mydata);
char *b, *c;int count,jj=0,cu=1;
CString r;
char j[1000],m[100];
unsigned int fieldcount = mysql_num_fields(result);
MYSQL_ROW row = NULL;
row = mysql_fetch_row(result);
setlist(3,1);
b=row[6];
for(int i=0;*(b+i)!='\0';i++)
{j[i]=*(b+i);}
j[i]='\0';
while(cu)
{
count=0;
for(;j[jj]!='|';jj++)
{
if(j[jj]=='\0') {cu=0;break;}
if(j[jj]=='\n');
else m[count++]=j[jj];
}
jj++;
m[count]='\0';
c=m;
typetext(0,c);
para();
}
wordRange = wordSelection.GetRange();
ListFormat hhh = wordRange.GetListFormat();
hhh.RemoveNumbers(v1);

}
else
{
mysql_close(&mydata);
return ;
}
}




请教各位论坛大神了,拜谢!
[解决办法]
for(int i=0;*(b+i)!='\0';i++)
{
j[i]=*(b+i);
}
j[i]='\0';

在for语句中定义的局部变量i只在循环体内有效
如果使用VC6.0,i在循环体外也有效,这是违反语言标准的BUG
[解决办法]
建议楼主学学编码规范,当你的代码对齐了,错误就一目了然了。
[解决办法]
c++块中定义的变量,只有块里面可见,在块外是看不见的!所谓块一般是指{}包围起来的范围,但for,while参数也属于块
[解决办法]
楼主直接从vc6的工程拷过来的代码吧?
[解决办法]
全选,按Alt+F8

读书人网 >C++

热点推荐