gcc 编译器忽略调试构建的未初始化变量警告

2024-04-25

gcc编译器忽略uninitialized variable warning用于调试构建。这对我来说看起来很奇怪,有人可以帮助我理解这一点吗?

## Program  
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int i, max;
    int count;
    if (argc < 2) {
        return -1;
    }
    max = atoi(argv[1]);
    for (i = 0; i < max; i++) {
        count++;
    }
    printf("count is %d\n", count);
    return 0;
}

gcc a.c -g -Wall -Werror

无警告

gcc a.c -O3 -Wall -Werror

a.c: In function ‘main’:
a.c:8:9: error: ‘count’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
     int count;
         ^~~~~
cc1: all warnings being treated as errors

gcc版本:7.4.0


虽然看起来很奇怪,但这种行为是记录在案 https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html for -Wmaybe-uninitialized海湾合作委员会选项:

-Wmaybe-uninitialized

对于自动(即局部)变量,如果存在从函数入口到使用已初始化变量的路径,但存在其他一些未初始化该变量的路径,则编译器会发出警告(如果不能)证明未初始化的路径在运行时不被执行。

这些警告只有在优化编译时才可能出现,否则 GCC 不会跟踪变量的状态。

我猜原因是分析未初始化变量的成本对于不优化编译来说太大了。这就是为什么这样做只是为了优化一个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gcc 编译器忽略调试构建的未初始化变量警告 的相关文章

  • Windows 10 Mobile (10.0.14393) 地理围栏后台任务 (LocationTrigger)

    自从10 0 14393 周年纪念更新 LocationTrigger似乎不起作用 我有 Windows Phone 8 1 应用程序 也适用于 UWP 应用程序 输出到的便携式库Windows Runtime Component图书馆 w
  • clang 格式换行符在错误的位置

    给出以下代码行 get abc manager get platform status abc platform status sw update status fill update status actions allowed stat
  • 如何使用 zlib 制作 .zip 文件

    我正在阅读zlib的文档 它相当详细 但我读到了这一行 输出数据将位于zlib格式 与 gzip 或zip formats http www zlib net zlib how html http www zlib net zlib how
  • 将字符串中的“奇怪”字符转换为罗马字符

    我需要能够将用户输入仅转换为 a z 罗马字符 不区分大小写 所以 我感兴趣的角色只有26个 然而 用户可以输入他们想要的任何 形式 的字符 西班牙语 n 法语 e 和德语 u 都可以包含用户输入中的重音符号 这些重音符号会被程序删除 我已
  • 带 If 的嵌套 For 循环的时间复杂度

    void f int n for int i 1 i lt n i if i int sqrt n 0 for int k 0 k lt pow i 3 k do something 我的思考过程 执行if语句的次数 sum i 1 to
  • 如何生成 appsettings..json 文件?

    我有一个 ASP NET Core 2 WebAPI 它将部署在以下环境中 INT QA STAGE 生产环境 基于上述 我需要有appsettings
  • TcpClient 在异步读取期间断开连接

    我有几个关于完成 tcp 连接的问题 客户端使用 Tcp 连接到我的服务器 在接受客户端后listener BeginAcceptTcpClient ConnectionEstabilishedCallback null 我开始阅读netw
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • 如何在 C++ 中将 CString 转换为 double?

    我如何转换CString to a double在 C 中 Unicode 支持也很好 Thanks A CString可以转换为LPCTSTR 这基本上是一个const char const wchar t 在 Unicode 版本中 知
  • C++ 插件的“最适合”动态类型匹配

    我有一个几乎所有东西都是插件的架构 该架构以图形用户界面为基础 其中每个插件都由一个 表面 即用户可以通过其与插件交互的 UI 控件 表示 这些表面也是插件 每当添加新插件时 瘦主机都会自动确定哪个可用表面与其最匹配的 UI 如何在 C 中
  • 预处理后解析 C++ 源文件

    我正在尝试分析c 使用我定制的解析器的文件 写在c 在开始解析之前 我想摆脱所有 define 我希望源文件在预处理后可以编译 所以最好的方法是运行C Preprocessor在文件上 cpp myfile cpp temp cpp or
  • C++ 错误 - “成员初始值设定项表达式列表被视为复合表达式”

    我收到一个我不熟悉的 C 编译器错误 可能是一个非常愚蠢的错误 但我不能完全指出它 Error test cpp 27 error member initializer expression list treated as compound
  • 如何随着分辨率的变化自动调整大小和调整表单控件

    我注意到某些应用程序会更改控件的位置以尽可能适应当前的分辨率 例如 如果窗口最大化 则控件的设置方式应使整个 GUI 看起来平衡 是否可以使用 C 在 Visual studio 2010 中制作或实现此功能 Use Dock http m
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • WPF。如何从另一个窗口隐藏/显示主窗口

    我有两个窗口 MainWindow 和 Login 显示登录的按钮位于主窗口 this Hide Login li new Login li Show 登录窗口上有一个检查密码的按钮 如果密码正确 我如何显示主窗口 将参数传递给 MainW
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • C 中带有指针的结构的内存开销[重复]

    这个问题在这里已经有答案了 我意识到当我的结构包含指针时 它们会产生内存开销 这里有一个例子 typedef struct int num1 int num2 myStruct1 typedef struct int p int num2
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • C#中为线程指定特殊的cpu

    我有 2 个线程 我想告诉其中一个在第一个 cpu 上运行 第二个在第二个 cpu 上运行 例如在具有两个 cpu 的机器中 我怎样才能做到这一点 这是我的代码 UCI UCIMain new UCI Thread UCIThread ne
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率

随机推荐

  • 根据当前用户过滤 Power BI 报告

    我们目前正在为我们公司开发 Power BI 仪表板 Office 365 并希望根据当前用户的偏好定制仪表板上的信息 我们公司有多个部门和子部门 因此向所有用户显示每个部门的数据会适得其反 例如 如果 Bob 属于欧洲销售 他将仅看到欧洲
  • 通过 Discord OAuth 传递字符串?

    我想知道是否可以使用 Discord OAuth 识别范围 同时还将重要的补充信息传递到重定向 URL site with important variable gt oauth page gt site that needs import
  • 超时设置为无限时间时出现超时异常

    在我的 C NET 3 5 应用程序中 我使用 CastleProject ActiveRecord 而不是 NHibernate 这是使用 MS SQL Server 2008 的桌面应用程序 我已将 ADO 命令超时设置为 0 以防止批
  • 语音识别和语调检测

    我想做一个 iOS 应用来计算疑问句 我会寻找 WH 问题以及 我会吗 格式化问题 我对语音或音频技术领域不太了解 但我Google了一下 发现语音识别SDK很少 但仍然不知道如何检测和绘制语调 是否有支持语调或情感语音识别的 SDK 据我
  • 如何从对话框片段获取主机片段中的按钮点击

    我有一个 listFragment 我想在 listItemClick 上显示 DialogFragment 是 否 我想取回 listFragment 中的用户选择 是 否 我已经阅读了有关侦听器接口机制的信息 但它与 Activityf
  • Google Analytics 未在 Swift 中初始化

    由于某种原因 我的新 swift 应用程序没有初始化 Google Analytics 我在项目中为所有 GAnalytics 文件创建了一个桥接标头 import GAI h import GAIDictionaryBuilder h i
  • 使用 cmake 和 Visual Studio 的一个解决方案中的多个项目

    我有一个 Visual Studio 2010 解决方案 其中包含 5 个项目 两个库和三个应用程序 依赖于库 我现在想将构建系统迁移到 CMake 也能够在 Linux 下编译 我已经了解了如何为一个项目编写 CMakeLists txt
  • Java HashSet 中元素的排序

    为什么第二组和第三组保持顺序 Integer j new Integer 3 4 5 6 7 8 9 LinkedHashSet
  • 在 Homestead 中配置 php.ini

    我正在尝试更改变量最大输入变量在我的 php ini 文件中指定 How many GET POST COOKIE input variables may be accepted max input vars 2500 和跑步 sudo n
  • 有没有办法在 Visual Basic 6.0 应用程序中添加全局错误处理程序?

    VB 6 0没有任何全局处理程序 为了捕获运行时错误 我们需要在每个我们认为可能发生错误的方法中添加一个处理程序 但是 仍然有一些地方可能被遗漏 所以 我们最终会遇到运行时错误 在应用程序的所有方法中添加错误处理程序 唯一的方法吗 不 无法
  • Windows 中的 SQLAlchemy 引擎绝对路径 URL

    我正在尝试连接到 Windows 7 x64 计算机上的 python 3 3 应用程序中的 sqlite database 文件 为此 文档指出 sqlite
  • IOS Safari URL UTI 分享表

    我正在尝试使用 safari 共享按钮和共享表将当前 URL 从 safari 传递到我的应用程序 我希望它进入我的应用程序 而不是让它成为共享扩展 在 Safari 中 共享表不显示我的应用程序 我已注册以下文档类型 UTI 但未成功 p
  • Asp.NET WebApi 基于约定的方法 Url/Route 查询

    我不确定基于 ASP NET WebAPI 约定的休息服务的 最佳实践 前进方向 该服务需要返回资源的 子属性 eg UsersController public User Get int id returns named user via
  • R Markdown:openBinaryFile:不存在(没有这样的文件或目录)

    我开发了一个闪亮的应用程序 允许用户通过 R Markdown 下载 HTML 报告 我正在尝试将自定义 css 和图像包含到我的 rmarkdown 文件中 但是 我不断收到此错误消息 pandoc Could not fetch eit
  • 使用 Apache Axis2 从 WSDL 文件生成单独的 Java 文件而不是单个存根

    目前 我们使用以下命令从给定的 WSDL 文件生成单个存根 wsdl2java uri filename wsdl 这会生成一个包含所有函数调用等的单个 Java Stub 问题是这次生成的 Java Stub 的大小超过 20mb 这使得
  • 如何在symfony2中提交表单ajax?

    我即将使用 Ajax 提交我的表单 我已使用 Ajax 成功提交我的表单POST但不知道如何使用 AjaxSymfony builform builder gt add name text array constraints gt arra
  • 按定义的间隔切割

    R中有没有某种方法可以按定义的间隔进行切割而没有任何中断 例如 如果我想要精确区间 1 10 内的值 默认情况下cut将这个区间分成更小的区间 要切入预定义的间隔 您可以使用以下命令指定中断向量breaks范围 定义一些数据 x lt sa
  • iOS:在故事板中将子类从 UIView 更改为 UIScrollView

    我创建了一个基于故事板的项目 在视图控制器的视图之一中需要放置一些额外的元素 这会导致视图高度增加 使得视图现在必须是可滚动的 是否可以简单地将故事板中 UIView 的类类型更改为 UIScrollView 它真的会将顶级 UIView
  • Neo4JClient:如何创建关系?

    我看到了一篇具有相同标题的帖子 但不幸的是无法通过查看给定的示例找到解决方案 我通过以下方式创建了节点 private static void createExampleNetwork GraphClient client try Cyph
  • gcc 编译器忽略调试构建的未初始化变量警告

    gcc编译器忽略uninitialized variable warning用于调试构建 这对我来说看起来很奇怪 有人可以帮助我理解这一点吗 Program include