警告:ISO C90 禁止混合声明和代码 [-Wdeclaration-after-statement]
warning: ISO C90 forbids mixing declarations and code [-Wdeclaration-after-statement]
我有这个c文件
#include <stdio.h>
int main(int argc, char *argv[])
{
int x,i,sum;
sum = 0;
FILE *fin;
fin = fopen("testdata1", "r");
for (i = 0; i < 20; i++ ){
fscanf(fin, "%d", &x);
sum += x;
}
printf("Sum = %d", sum);
fclose(fin);
return 0;
}
我是通过gcc -ansi -pedantic -Wall app.c -o app
编译的
编译时,我不断收到此警告错误
warning: ISO C90 forbids mixing declarations and code [-Wdeclaration-after-statement]
FILE *fin;
^
1 warning generated.
关于如何阻止它的任何提示?
这是因为在C89/C90中,你要先声明(最终初始化)
你的变量,然后把你的代码。这是突出显示的问题:
int x,i,sum;
sum = 0; // This is code!
FILE *fin;
第一个解决方案是在声明中初始化sum
:
int x,i,sum = 0;
第二种方案是在代码开头初始化sum
:
int x,i,sum;
FILE *fin;
sum = 0;
fin = fopen("testdata1", "r");
第三种解决方案是使用其他标准进行编译。对于 gcc/mingw,这是
通过传递 command-line 选项 -std=<your standard>
来实现,因为
例如,-std=c99
或 -std=c11
(并删除 -ansi
)。
我有这个c文件
#include <stdio.h>
int main(int argc, char *argv[])
{
int x,i,sum;
sum = 0;
FILE *fin;
fin = fopen("testdata1", "r");
for (i = 0; i < 20; i++ ){
fscanf(fin, "%d", &x);
sum += x;
}
printf("Sum = %d", sum);
fclose(fin);
return 0;
}
我是通过gcc -ansi -pedantic -Wall app.c -o app
编译时,我不断收到此警告错误
warning: ISO C90 forbids mixing declarations and code [-Wdeclaration-after-statement] FILE *fin; ^ 1 warning generated.
关于如何阻止它的任何提示?
这是因为在C89/C90中,你要先声明(最终初始化) 你的变量,然后把你的代码。这是突出显示的问题:
int x,i,sum;
sum = 0; // This is code!
FILE *fin;
第一个解决方案是在声明中初始化sum
:
int x,i,sum = 0;
第二种方案是在代码开头初始化sum
:
int x,i,sum;
FILE *fin;
sum = 0;
fin = fopen("testdata1", "r");
第三种解决方案是使用其他标准进行编译。对于 gcc/mingw,这是
通过传递 command-line 选项 -std=<your standard>
来实现,因为
例如,-std=c99
或 -std=c11
(并删除 -ansi
)。