我有这个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
编译时,我不断得到这个警告错误
警告:ISO C90 禁止混合声明和代码 [-Wdeclaration-after-statement]
文件 *fin;
^
生成 1 个警告。
关于如何阻止这种情况的任何提示?
这是因为在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,这是
通过传递命令行选项来实现-std=<your standard>
, 为了
例子,-std=c99
or -std=c11
(并删除-ansi
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)