警告:ISO C90 禁止混合声明和代码 [-Wdeclaration-after-statement] [重复]

2024-04-18

我有这个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(使用前将#替换为@)

警告:ISO C90 禁止混合声明和代码 [-Wdeclaration-after-statement] [重复] 的相关文章

  • 如何在Unity中使用MediaCapture类访问相机预览帧?

    我正在尝试在 Unity 应用程序的脚本中访问 Hololens 的相机预览帧 但遇到一些问题 我想使用 MediaCapture 类访问相机预览 我知道它可以在 UWP 应用程序中实现 但我想在 Unity 中实现 在 UWP 应用程序中
  • 适用于 Windows 的免费内存调试器? [复制]

    这个问题在这里已经有答案了 可能的重复 有 Windows 的良好 Valgrind 替代品吗 https stackoverflow com questions 413477 is there a good valgrind substi
  • char* 与 const char* 作为参数

    我在使用的时候很多时候都会遇到编译错误char 代替const char 所以 我不确定实际的区别 语法和编译机制 如果您追求两者之间的差异 只需将它们视为 char 是一个指针 指向包含也可以更改的 char 类型值的位置 指针的值可以更
  • 管道破裂错误

    我在 FTP 实现中的打开的数据套接字上使用 write 来发送文件 但写入一些数据后 它会挂起一段时间 之后它会返回 损坏的管道 错误 对此的任何帮助将不胜感激 我的进程从一个缓冲区读取数据包并写入套接字 我在增加带宽时注意到了这个问题
  • 寻找发音的正确性

    我需要借助 Microsoft 语音 SDK 来识别用户发音的 质量 System Speech Recognition 我使用的是 MS Speech Engine US 所以我实际需要的是找出说话者的声音与 北美 口音的接近程度 实现此
  • WPF 基础知识:MVVM 的共享全局样式

    我正在尝试使用 MVVM 式的方法来进行 WPF 开发 我在 ViewModel 命名空间下有我的逻辑视图模型类 并且在 View 命名空间下有这些视图模型类的匹配样式 现在 我的视图信息位于 ResourceDictionary XAML
  • ld:文件是针对 Mac OS X 上不受支持的文件格式构建的

    我必须使用在其他 x64 86 计算机上编译的共享对象来构建一个项目 我有这个错误 cc std c11 Wall Werror Wextra pedantic I include src server c obj tftp o o bin
  • 使用 C# 的服务 SACL ||使用 C# 获取具有 ACCESS_SYSTEM_SECURITY 权限的服务的句柄

    有人知道如何使用 C 获取远程服务上的 SACL 吗 我尝试了很多不同的方法 但基本上没有什么效果 我可以在本地计算机上获取 DACL 和 SACL 但在远程计算机上获取其中任何一个似乎都不可能 我所做的是创建一个名为ServiceSecu
  • 如何在Unity中集成xAPI / TinCan

    我是 xAPI TinCan API 的新手 所以我的问题可能有点笼统 但到目前为止我还没有找到任何可以帮助我的东西 我认为可以将 xAPI 集成到 Unity 项目 游戏或模拟 中 但我到底该怎么做呢 我可以阅读有关 xAPI 和 Uni
  • C#中私有类的概念

    除了内部类之外 C 中是否可以存在私有类 根本不 除非它在嵌套类中 否则什么都没有 未嵌套在其他类或结构中的类和结构可以是public or internal 声明为 public 的类型可由任何其他类型访问 声明为内部的类型只能由同一程序
  • 表达式树序列化器

    我想在客户端使用 Linq 表达式 序列化它们并在服务器端执行它们 为此我想使用 http expresstree codeplex com http expressiontree codeplex com 但我想针对自己的 WCF 调用执
  • 具有 C++ 客户端和 C# 后端的协议缓冲区?

    如何通过 HTTP 或等效的 Web 服务将 C 后端与 C 前端连接起来 这里分为三个部分 服务器 听起来像 C 客户端 听起来像 C 和传输 将它们分开 并从最重要的开始 传输 这里的重大决定是您希望数据采用什么形状 您提到了协议缓冲区
  • 无需使用abs函数或if语句即可获取绝对值

    我在想如何在不使用的情况下获得整数的绝对值if声明也不abs 起初我使用的是左移位 lt lt 试图将负号移出范围 然后将位右移回原来的位置 但不幸的是它对我不起作用 请让我知道为什么它不起作用以及其他替代方法 From 位摆弄黑客 htt
  • C++:如何通过时间和本地时间获取实际时间?

    我正在寻找一种在 C 中以 HH MM SS 方式节省时间的方法 我在这里看到它们有很多解决方案 经过一番研究后我选择了time and localtime 然而 似乎localtime函数有点棘手 因为它says http rabbit
  • 为什么我可以使用 ret 退出 main?

    我即将弄清楚程序堆栈到底是如何设置的 我了解到用以下方式调用该函数 call pointer 实际上等同于 mov register pc programcounter add register 1 where 1 is one instr
  • 如何在 Windows 8 中使用 StreamWriter 写入文件?

    我在创建时遇到问题StreamWriter在windows 8中 通常我只是创建一个实例 只是传递一个字符串作为参数 但在Windows 8中 我收到一个错误 表明它应该接收一个Stream 但我注意到Stream是一个抽象类 有人知道吗编
  • 在 C# .Net 中将小数转换为小时、分钟和秒

    我在数据库中有一个分钟字段 例如 138 34 我需要将其转换回 HH MM SS 最简单的方法是什么 您可以使用TimeSpan FromMinutes minutesInDouble 以双精度格式传递上述值 欲了解更多信息 检查 MSD
  • 如何在不实际调整大小的情况下触发 Control.Resize 事件?

    我不会对控件进行子类化 尝试通过触发事件Control Size Control Size失败 因为即使新大小实际上不同 它也不会触发 如果您要子类化Control 你可以打电话OnResize直接 或者将其暴露在 API 上 public
  • 判断一个点是否在多面体内部

    我试图确定某个特定点是否位于多面体内部 在我当前的实现中 我正在研究的方法采用我们正在寻找多面体面的数组 在本例中为三角形 但稍后可能是其他多边形 的点 我一直在尝试根据这里找到的信息进行工作 http softsurfer com Arc
  • 非通用接口是通用接口的同义词

    我在 C 中有一个通用接口 并且几乎总是将它与其中一种类型一起使用 我想为该类型创建一个非通用接口并使用它 假设我有以下代码 public interface IMyGenericList

随机推荐