我改变了ISO的C ++ Lookup

时间:2013-05-09 18:46:24

标签: c++ function iso

我有一个字典的代码。

void Dictionary::translate(char out_s[], const char s[])
{

for (int i=0;i<numEntries;i++)
{
   if (strcmp(englishWord[i], s)==0)
       break;
}
if (i<numEntries)
strcpy(out_s, elvishWord[i]);

这给了我错误name lookup of i changed for iso,并提到如果我使用-fpermissive,代码将被接受。如果我尝试在for循环之外初始化变量,则会产生一大堆错误。

有什么想法吗?

提前致谢。

3 个答案:

答案 0 :(得分:3)

不是“for iso”(可能读取整个错误消息...... ),但是对于ISO C ++。问题是i变量的范围只是for循环(因为它的定义在循环的初始化中)。因为看起来你想在循环之外使用它,所以声明它是这样的:

int i;
for (i = 0; i < foo; i++) {
    // ...
}

do_safe_stuff_with(i); // valid

答案 1 :(得分:2)

当你这样做时。

for (int i=0;i<numEntries;i++)

那么变量i只是循环的局部变量,你不能在循环之外真正使用它。

如果你想在循环之外使用i,那么你需要在循环之外声明它:

int i;
for (i=0;i<numEntries;i++)

答案 2 :(得分:1)

ifor循环条件子句中声明。它在if循环后的for子句中不可见。

尝试:

int i = 0;
for (;i<numEntries;i++)
{
   if (strcmp(englishWord[i], s)==0)
       break;
}
if (i<numEntries)