1

我有以下字典代码。

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

有任何想法吗?

提前致谢。

4

3 回答 3

3

不是“for iso”(也许阅读了整个错误消息...),而是针对 ISO C++。问题是i变量的范围只是for循环(因为它的定义在循环的初始化中)。由于您似乎想在循环之外使用它,因此将其声明如下:

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

do_safe_stuff_with(i); // valid
于 2013-05-09T18:51:24.763 回答
2

当你这样做时

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

那么该变量i仅在循环中是本地的,您不能在循环之外真正使用它。

如果要i在循环外使用,则需要在循环外声明:

int i;
for (i=0;i<numEntries;i++)
于 2013-05-09T18:50:07.953 回答
1

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

尝试:

int i = 0;
for (;i<numEntries;i++)
{
   if (strcmp(englishWord[i], s)==0)
       break;
}
if (i<numEntries)
于 2013-05-09T18:50:41.517 回答