c++查找i更改为ISO

C++ Lookup of i changed for ISO

本文关键字:ISO 查找 c++      更新时间:2023-10-16

我为字典准备了以下代码:

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循环之外初始化变量,它会生成一大堆错误。

任何想法?

不是"for iso"(可能读取整个错误消息…),而是iso c++。问题是i变量的作用域仅是for循环(因为它的定义在循环的初始化中)。因为你似乎想在循环外使用它,所以像这样声明它:

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

当你做某事时

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

则变量i仅在循环中是局部的,您不能在循环外使用它。

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

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

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

试题:

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