隐式转换的 gcc 警告标志

2024-02-13

我最近遇到了一个与下一个类似的错误:

double getSomeValue()
{
    return 4.0;
}
...
std::string str;
str = getSomeValue();

正如您所看到的,很容易发现问题,但在大型代码库中getSomeValue()与调用代码不在同一个文件中,可能很难发现这一点double to std::string无声转换。 GCC 可以很好地编译这段代码-Wall -Wextra -Werror(这里的示例输出,我不知道使用了什么警告标志:http://ideone.com/BTXBFk http://ideone.com/BTXBFk).

我如何强制 GCC 对这些危险的隐式转换发出警告?我试过-Wconversion,但它非常严格,并且在大多数包含的标头中会导致常见情况的错误,例如unsigned - 1。有没有弱一点的版本-Wconversion?


您可以使用-Wfloat-conversion旗帜,或更广泛的-Wconversion.

但请注意,对于 C++11统一初始化大括号语法,您会收到“开箱即用”的警告,而无需-Wconversion旗帜;例如。:

#include <string>

double getSomeValue() {
    return 4.0;
}

int main() {   
    std::string str{ getSomeValue() }; // C++11 brace-init
}
C:\Temp\CppTests>g++ -std=c++11 test.cpp
test.cpp: In function 'int main()':
test.cpp:8:35: warning: narrowing conversion of 'getSomeValue()' from 'double' t
o 'char' inside { } [-Wnarrowing]
     std::string str{ getSomeValue() };
                                   ^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

隐式转换的 gcc 警告标志 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 为什么这个 Web api 控制器不并发?

    我有一个 Web API 控制器 里面有以下方法 public string Tester Thread Sleep 2000 return OK 当我调用它 10 次 使用 Fiddler 时 我预计所有 10 次调用都会在大约 2 秒后
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点

随机推荐

  • 如何为 mvc 应用程序中的所有控制器启用 ssl

    我有一个 MVC 5 应用程序 并且安装了 ssl 证书 现在正在使用 https 连接 但在我的代码中 我必须在 homecontroller 上设置 requirehttps 属性 如下所示 RequireHttps public cl
  • 使用命令行选项在 mplayer 中播放视频的特定间隔

    我正在使用 mplayer 播放视频 我想知道是否有命令行选项可以在 mplayer 中播放视频的特定间隔 例如 如果我想播放一个 56 秒的视频文件 持续时间为 3 秒 那么命令行选项是什么 我知道 ss 选项会寻找特定位置 但如何指定我
  • 当脚本作为 cronjob 运行时,python 脚本在导入语句处停止

    我使用 cron 每 30 分钟执行一个 python 脚本 但它在 import 语句处停止 我不明白为什么 因为我没有得到任何反馈 在我的 crontab 中我有 30 sh exec script sh 文件exec script s
  • 我们如何从Google Direction API默认获得从A点到B点的最短距离路线

    我们如何从 Google Direction API 建议的替代路线中默认获得从 A 点到 B 点的最短距离路线 默认情况下 它会根据当前的交通状况为我们提供最短持续时间的路线 我注意到 如果您打开 provideRouteAlternat
  • 使用和不使用 Set 关键字之间的类型差异

    我刚刚解决了一个问题 我将 Set 关键字放在定义行中 但我想知道的是 为什么 基本上 我正在这样做 Dim startCell iCell as Range For Each iCell in Range whatever If iCel
  • 什么是*确定性并发*?

    我听说有3种并发 确定性并发 消息传递并发 共享状态并发 我知道 2 演员模型 和 3 通用线程 但不知道 1 那是什么 确定性并发是一种并发编程模型 在此模型中编写的程序具有以下属性 对于给定的一组输入 程序的输出值对于任何执行计划都是相
  • C++ typedef 类的使用

    为什么要使用一个typedef class Name 我在IBM C 文档 http publib boulder ibm com infocenter comphelp v7v91 index jsp topic com ibm vacp
  • powershell 鼠标移动不会阻止空闲模式

    System Windows Forms Cursor Position New Object System Drawing Point pos X pos Y 1 System Windows Forms Cursor Position
  • OpenCV 全屏窗口

    我正在尝试使用 opencv 2 3 创建一个全屏窗口 但它不起作用 但我记得 它应该起作用 代码非常简单 cvNamedWindow 名称 CV WINDOW FULLSCREEN 我也尝试设置窗口属性 cvSetWindowProper
  • AWS API Gateway DynamoDB GetItem 没有排序键?

    我有一个 Dynamodb 表 其中包含以下内容 primary key S series sort key S type of brokers title S Types Of Brokers primary key S series s
  • Jquery Datatables - 使整行成为链接

    这也许很简单 但似乎无法弄清楚 使用 jquery 数据表如何使每一行可单击以链接到普通页面 因此 如果有人将鼠标悬停在任何一行上 则整行将突出显示并可单击 并链接到我希望它在单击时链接到的任何网址 我用过fnDrawCallbackjQu
  • Oracle 变异触发器

    我正在编写一个简单的触发器 它应该只发送一条消息 其中包含更新的行数以及性别的旧值和性别的更新值 然而 当我运行更新时 我收到错误 表明表正在发生变化 并且表可能无法看到它 但我不确定为什么 trigger create or replac
  • 如何设置 Pyomo 求解器超时?

    如何设置 Pyomosolve 方法的超时 更具体地说 告诉 pyomo 在 x 秒后 返回当前找到的最优解 所以我能够通过 pyomo 文档找到答案 我认为分享会有所帮助 设置 Pyomo 的超时时间solve method solver
  • 非对称密钥容器的相互转换(例如:X.509、PGP、OpenSSH)

    非对称加密密钥基本上可以在主要密钥容器格式之间相互转换吗 例如 我可以将 X 509 密钥文件转换为 PGP 或 OpenGPG 密钥文件吗 并且 假设答案是肯定的 以任何格式保存一对密钥并转换为该场合所需的任何容器文件格式是否 安全中立
  • 如何在emacs语义中包含标准jdk库?

    我使用的是 Emacs 23 2 这是我加载语义的方式 setq semantic default submodes global semantic idle scheduler mode global semanticdb minor m
  • R中glmnet中的岭回归;使用 glmnet 包计算不同 lambda 值的 VIF

    我有一组多重共线性变量 我正在尝试使用岭回归来解决这个问题 我正在使用glmnetR 中的包 alpha 0 用于岭回归 library glmnet 我有一系列 lambda 值 并且我通过 cv glmnet 选择最佳 lambda 值
  • ListView 列的最小宽度

    我怎样才能指定MinWidthWPF 中的 Listview 列 此代码使用 Thumb 控件 它将阻止用户仅将标题拖动到指定的宽度 将其添加到您的 WPF 中
  • 如何在 React 中实现 Cloudinary 上传小部件?

    我正在尝试在我的 React 应用程序中使用 Cloudinary 上传小部件 但我遇到了问题 运行项目时 上传小部件会立即出现 但是当关闭并再次打开时 应用程序崩溃并显示以下消息 widget open 不是一个函数 Note 上传工作正
  • 如何使用异步回调进行同步操作?

    如何用异步函数进行同步操作 class MyClass static let shared MyClass let operationQueue OperationQueue let dispatchGroup DispatchGroup
  • 隐式转换的 gcc 警告标志

    我最近遇到了一个与下一个类似的错误 double getSomeValue return 4 0 std string str str getSomeValue 正如您所看到的 很容易发现问题 但在大型代码库中getSomeValue 与调