gpt4 book ai didi

c - 警告 : ISO C90 forbids mixing declarations and code [-Wdeclaration-after-statement]

转载 作者:行者123 更新时间:2023-12-05 01:35:06 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





ISO C90 forbids mixed declarations and code in C

(6 个回答)


4年前关闭。




我有这个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,这是
通过传递命令行选项 -std=<your standard> 来实现, 为了
例如, -std=c99-std=c11 (并删除 -ansi )。

关于c - 警告 : ISO C90 forbids mixing declarations and code [-Wdeclaration-after-statement],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42262965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com