编码IDE:Microsoft Visual C ++ 6.0
以下代码:
#include <stdio.h>
#include <string.h>
int main()
{
int i;
for(i=0; i<7; i++)
{
int j;
for(j=0; j<5; j++)
{
if(i==0 || i==6)
{
// print *****
if(j<4)
{
printf("*");
}
else if(j==4)
{
printf("*\n");
}
}
else
{
if(j==0)
printf("*");
else if(j==4)
{
printf("*\n");
}
}
}
}
return 0;
}
生成此错误消息:
error C2143: syntax error : missing ';' before 'type'
error C2065: 'i' : undeclared identifier
我只是不知道为什么它给我这种错误信息。它假设是一个简单的循环 - for (int i=0; i<10; i++){}
但它只是不起作用并给我这种错误信息。
答案 0 :(得分:3)
您的编译器可能遵循旧版本的C标准ISO 9899:1990,通常称为“C90”(或有时称为“C89”或“ANSI-C”)。
C90标准不允许for循环内的变量声明。所有变量声明必须在{
之后直接在当前语句的顶部完成。
此外,C90标准不允许//
注释,这可能是编译器错误的来源。
当前的C标准ISO 9899:2011(“C11”)允许在任何地方进行变量声明,并且还允许//
条评论。