为什么GCC不报告未初始化的变量?

2024-05-03

#include <ios>
#include <iostream>
#include <map>

using namespace std;

int main() {
  ios_base::sync_with_stdio(false);
  map<int, int> v;
  int i;
  int t;
  while (cin >> i) {
    v[i] = t++;
  }
  auto mi = i;
  auto mt = t;
  for (const auto p : v) {
    if (p.second < mt) {
      mi = p.first;
      mt = p.second;
    }
  }
  cout << mi << '\n';
  return 0;
}

上述程序大量使用了未初始化的变量t,但 GCC 不会使用 -Wall 或 -Wuninitialized 报告它。为什么会这样呢?

值得注意的是 Clang 捕获了它:

main.cpp:13:12: warning: variable 't' is uninitialized when used here [-Wuninitialized]
    v[i] = t++;
           ^

使用 g++ (GCC) 7.2.1 20170915(红帽 7.2.1-2)。

使用 clang 版本 4.0.1 (tags/RELEASE_401/final)。


正如你所看到的https://godbolt.org/g/kmYMC1 https://godbolt.org/g/kmYMC1即使应该报告,GCC 7.2 也没有报告。我将在 GCC 的问题跟踪器中创建一个票证。


g++ 的警告标志未被调用-Wuninitialized: 它被称为-Wmaybe-uninitialized.

Also, 正如乔纳森·韦克利(Jonathan Wakely)在回答中指出的那样 https://stackoverflow.com/a/47308887/598696,仅当启用优化时,g++ 才能检测未初始化变量的使用。

启用两者-Wmaybe-initalized优化会产生预期的警告:https://godbolt.org/g/3CZ6kT https://godbolt.org/g/3CZ6kT

注意-Wmaybe-initalized默认情况下启用两者-Wall and -Wextra.

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

为什么GCC不报告未初始化的变量? 的相关文章

随机推荐

  • 什么是 Google API 发现?

    我无法理解 Google 产品 服务中使用的 API 发现 概念 以下是一些使用上述发现服务访问 Google Cloud Vision 的 Python 代码 from googleapiclient discovery import b
  • 使用 OpenCV 裁剪黑色边缘

    我认为这应该是一个很简单的问题 但我找不到解决方案或有效的关键字进行搜索 我只有这个图像 黑边没有用 所以我想把它们剪掉 只留下 Windows 图标 和蓝色背景 我不想计算Windows图标的坐标和大小 GIMP 和 Photoshop
  • 在 VBScript 中导航 XML 节点(对于 Dummy)

    我正在尝试编写一个脚本来为我操作 xml 文件中的一些数据 我对 VBScript 还很陌生 但有 VB NET 和 VBA 背景 所以我觉得我知道自己在做什么 我认为可能有更好的方法来导航文件 而不是对每一行进行大量调用 InStr 或类
  • 自定义 Javascript EventManager - 请帮我完成

    我正在尝试创建一个自定义 javascript EventManager 类 我采用了 Grant Skinner 在他的 essel js 框架中使用的格式来创建类 并且需要坚持使用它 在这一点上我真的迷失了 我认为 至少在概念意义上 我
  • fork() 不并行运行

    我对编程过程很陌生 我的基本程序并没有真正按照我的预期工作 我在 Oracle VM 上的 Ubuntu 18 04 上运行此代码 这是代码 include
  • Meteor 文件上传不工作

    我已将包 cfs standard packages 和 cfs filesystem 添加到我的 Meteor 项目中 我想使用带有此输入的表单为我的博客上传精选图像 div class form group div
  • DocsList.createFile 有时会创建空白或损坏的 PDF

    我正在尝试创建一个 google 文档 如果可以的话 我很乐意将其创建为 HTML 然后将该文档导出为 pdf 以作为电子邮件附件发送 这是我的基本结构 var docName test var doc DocumentApp create
  • 如何使用动态时间扭曲获得距离矩阵?

    我有 6 个时间序列值 如下所示 import numpy as np series np array 0 0 1 2 1 0 1 0 0 0 1 2 0 0 0 0 0 0 1 2 0 0 0 0 0 1 1 0 0 1 2 1 0 1
  • Maven 父级定义中的相对路径

    在定义父工件时 我是否需要将其包含在子项目的 pom 中 例如 Is the
  • 动画后 SVG 路径发生变化

    我正在画一个
  • HtmlUnit 的替代方案

    迄今为止 我一直在研究可用的无头浏览器 发现 HtmlUnit 的使用非常广泛 与 HtmlUnit 相比 我们是否有任何具有可能优势的 HtmlUnit 替代方案 谢谢 纳恩 据我所知 HtmlUnit 是最强大的无头浏览器 你对此有什么
  • 生成落在多边形或形状内的点网格的最快方法?

    我在 python 中使用 shapely 并尝试在网格中生成均匀间隔的点 这些点在最快的 O n 时间内落在形状内 形状可以是任何闭合多边形 而不仅仅是正方形或圆形 我目前的做法是 找到最小 最大 y 和 x 来构建一个矩形 给定间距参数
  • 如何在android中的视频视图中获取视频的总长度

    我有一个问题 我想获取在视频视图中运行的视频的总长度 为此我正在使用视频视图的 getDuration 方法 但当我将其与 currentPosition 进行比较时 它总是返回 1 实际上我希望如果视频的当前位置等于视频的总长度那么它应该
  • Azure DevOps 扩展自定义 UI

    我的任务是开发 Azure DevOps 的扩展以自动化构建过程 自定义构建任务 需要注意的是 实际上我正在开发的是一系列构建任务 每个任务都包含常规输入 但由于历史原因 所有这些构建任务都应该分组 用户可以从管道设置中任务页面的下拉列表中
  • wpf 调试错误输出 System.WIndows.Data 错误 25

    我有一个自定义样式的组合框 效果很好 它被放置在用户控件内并绑定到数据结构 我使用 DisplayMemberPath 仅显示组合框文本框中的一个元素 ComboBox 样式取自 MSDN 并被多次使用 所以这里就不显示了
  • Python Suds URLError 名称或服务未知问题

    有一个奇怪的问题 我可以成功创建一个 suds 客户端并将其打印出来 gt gt gt client Client the wsdl url gt gt gt print client Suds https fedorahosted org
  • Node2vec 的工作原理

    我一直在读关于node2vec https cs stanford edu jure pubs node2vec kdd16 pdf嵌入算法 我有点困惑它是如何工作的 作为参考 node2vec 由 p 和 q 参数化 并通过模拟来自节点的
  • C#:如何在虚拟模式下有效过滤(隐藏)ListView 项目?

    C 如何在虚拟模式下有效过滤 隐藏 ListView 项目 我正在寻找一种在虚拟模式下过滤 隐藏 显示 ListView 中的项目的方法 我将我的项目缓存在列表视图项目数组中 如何有效地使其在按下过滤按钮时仅显示特定的列表视图项目 然后在按
  • 使用多个列组重塑 Pandas Dataframe

    我目前有一个宽数据框 如下所示 Index ID1 ID2 Foc A Foc B Foc C Sat A Sat B Sat C 0 r 1 10 15 17 100 105 107 1 r 2 20 25 27 110 115 117
  • 为什么GCC不报告未初始化的变量?

    include