警告:ISO C90禁止混合声明和代码[-Wdeclaration-后声明】
问题描述:
我有警告:ISO C90禁止混合声明和代码[-Wdeclaration-后声明】
#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
编译它在编译时,我一直得到这个警告这个C文件错误
警告:ISO C90禁止混合声明和代码[-Wdeclaration-后声明】 FILE *鳍; ^ 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
或-std=c11
(和删除-ansi
),实现了 。
使用'-std = c11'编译 –
我编译过'gcc -ansi -pedantic -Wall app.c -o app' – ihue
将'-ansi'改为'-std = c11' –