如何开启icc/icpc警告?

2024-01-10

我在Linux上安装了英特尔编译器composer_xe_2013_sp1.3.174。我对国际刑事法院的警告感到困惑。使用简单的程序 main.c 馈送 icc,如下所示:

int main(int argc, char **argv) {
  int a = 1;
  unsigned int b = -22;
  if (b = a) {

  }
}

我使用以下命令编译了该文件:icc -Wall main.c。令人惊讶的是,该命令默默地运行,没有任何警告。我必须打开icc上的警告开关吗?谢谢


Intel 编译器并没有像 gcc 那样提供良好的警告预设(至少在 Linux 上)。主要警告选项是-wn其中n可以是0到5。默认为1,4和5在Linux上没有意义。它还支持一些 gcc 选项,例如-Wall and -Wextra。然而:

  • -Wall正如您所发现的,与 gcc 相比非常简约
  • -w2 and -w3启用一些有用的诊断,但也有很多垃圾评论
  • -diag-disable:remark删除垃圾邮件,但也删除许多有用的诊断信息

到底-w3 -diag-disable:remark是 icc 拥有的最好的预设,但它仍然比gcc -Wall。相反,您需要从最少的警告集开始并构建自己的警告,或者从最大的诊断开始并禁用任何令人讨厌的使用-wd.

Build Up

第一种方法的主要缺点是英特尔并没有真正记录其大部分警告,因此很难知道可以启用哪些内容。但是,它确实支持许多 GCC 命令行标志,因此 GCC 文档是一个很好的起点。例如,以下是相对接近的设置g++ -Wall,如果您想使用其中一个进行开发并且很有可能使用另一个进行干净的构建,那么这很方便:

icpc -Wall -Warray-bounds -Wchar-subscripts -Wcomment -Wenum-compare -Wformat -Wuninitialized -Wmaybe-uninitialized -Wmain -Wnarrowing -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type -Wsign-compare -Wsequence-point -Wtrigraphs -Wunused-function -Wunused-but-set-variable -Wunused-variable -Wwrite-strings

这不是完全匹配gcc -Wall。 GCC 和 ICC 对上述警告的执行存在差异。我也无法找到 ICC 选项来匹配这些 GCC 警告:

-Wformat-contains-nul
-Wunused-label
-Wstrict-overflow
-Wvolatile-register-var

我故意忽略了这些,因为 ICC 版本比 GCC 版本更垃圾:

-Wstrict-aliasing   So broad that any use of polymophism will cause this warning
-Wswitch            Requires a default even if you have cases for all enumeration values

裁减

如果 GCC 奇偶性不是问题,那么了解 ICC 警告的最简单方法就是启用所有警告,然后决定是否喜欢它们。如果您不喜欢警告,可以使用它的诊断编号来禁用它,这通常比 GCC 的选项具有更多的粒度。

icpc -w3 -wd1418,2259

以下是我过去见过的一些被禁用的诊断:

  • 383:值复制到临时,引用临时使用
  • 869:从未引用参数“*”
  • 981:操作数按未指定的顺序求值
  • 1418:没有事先声明的外部函数定义
  • 1572:浮点相等和不等比较不可靠
  • 2259:非指针转换可能会丢失有效位
  • 11074:内联被限制最大大小(或最大总大小)禁止
  • 11076:要获取完整报告,请使用 -qopt-report=4 -qopt-report-phase ipo
  • 161:禁用对无法识别的编译指示的警告

但我鼓励您从所有这些开始,只减少对您的代码库有问题的那些。

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

如何开启icc/icpc警告? 的相关文章

  • 高级 Win32 图像文件 I/O?

    我想在 Windows C 应用程序中将图像文件读入内存 什么是一个相当简单的解决方案 也许类似于 IOS 提供的UIImage 我希望支持合理数量的文件格式 我需要为图像处理的位图提供一些低级访问权限 我在互联网上阅读了很多内容 看起来
  • 如何向 UWP 项目添加 .NET dll 引用?

    我有几个适用于 NETv4 x 的 NET dll 项目 我将版本更改为 4 6 1 并重新构建 没有出现问题 当我尝试从 UWP 项目向它们添加引用时 出现错误 项目的目标是 NETCore 而文件引用的目标是 NET框架 这不是受支持的
  • 如何调试参数化 SQL 查询

    我使用 C 连接到数据库 然后使用 Ad hoc SQL 来获取数据 这个简单的 SQL 查询非常方便调试 因为我可以记录 SQL 查询字符串 如果我使用参数化 SQL 查询命令 有没有办法记录 sql 查询字符串以进行调试 我想就是这样的
  • 如何在 C# 事件中区分更改是由代码还是由用户进行?

    我有一个简单的TextBox一开始是空的 我有一个简单的事件 TextChanged 可以知道用户何时更改了其中的任何内容TextBox 但是 如果我自己在代码中对其执行任何操作 该事件就会触发 喜欢设置textbox Text Test
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • 当我单击 GridView 项时返回 ImageView 实例

    当我点击GridView项时如何返回ImageView实例 我为 ItemClick 创建自定义绑定事件 public class ItemClickSquareBinding MvxBaseAndroidTargetBinding pri
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • 控制台应用程序 .net Core 2.0 的配置

    在 net Core 1 中我们可以这样做 IConfiguration config new ConfigurationBuilder AddJsonFile appsettings json true true Build 这样就可以使
  • 成员初始值设定项列表中的求值顺序是什么?

    我有一个带有一些参数的构造函数 我假设它们是按照列出的顺序初始化的 但在一种情况下 它们似乎是按相反的顺序初始化的 导致中止 当我反转参数时 程序停止中止 下面是我正在使用的语法的示例 a 之前需要初始化b 在这种情况下 你能保证这个初始化
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • for 循环 - 没有效果的语句

    由于某种原因 我收到错误 statement with no effect关于这个声明 for j idx j lt iter j increment printf from loop idx i int idx punc ctxt j 你
  • 使用 Linq 进行异步Where过滤

    我有一个List通过填充的元素async调用 WebService 没问题 我需要过滤该列表以便在应用程序视图上显示某些内容 我试过这个 List
  • 为什么 C 函数不能返回数组类型?

    我是 C 语言新手 想知道 为什么 C 函数不能返回数组类型 我知道数组名是数组第一个值的地址 而数组是 C 中的二等公民 您自己已经回答了这个问题 数组是二等公民 C 按值返回 数组不能按值传递 因此不能返回它们 至于为什么数组不能按值传
  • 如何从枚举中选择随机值?

    给定 C 中的任意枚举 如何选择随机值 我没有找到这个非常基本的问题 我会在一分钟内发布我的答案作为任何人的参考 但请随意发布你自己的答案 Array values Enum GetValues typeof Bar Random rand
  • 通过 MSBuild 调用 cl.exe 时无限期挂起

    我正在尝试在我的 主要是 C 项目上运行 MSBuild 想象一下一个非常庞大的代码库 Visual Studio 2015 是有问题的工具集 Windows 7 SP1 和 VS 2015 更新 2 即使使用 m 1 从而迫使它仅使用一个
  • 宏观评价[重复]

    这个问题在这里已经有答案了 可能的重复 未定义的行为和序列点 https stackoverflow com questions 4176328 undefined behavior and sequence points 我无法理解以下宏
  • 如何使用 g++ 在 c++ 20 中使用模块?

    我读了这个链接https gcc gnu org wiki cxx modules https gcc gnu org wiki cxx modules并尝试从该网站复制以下示例 我已经知道这个编译器部分支持模块系统 注 我用的是windo
  • C++0x 中的新 unicode 字符

    我正在构建一个 API 它允许我获取各种编码的字符串 包括 utf8 utf16 utf32 和 wchar t 根据操作系统 可能是 utf32 或 utf16 新的 C 标准引入了新类型char16 t and char32 t没有这么
  • Windows 上 libcurl 的静态库[重复]

    这个问题在这里已经有答案了 如何将此库 libcurl 静态链接到 exe 我努力了 disable share enable static 没有帮助 我使用的是MingW32 有没有一种简单的方法来静态链接这个库 这样我的应用程序就不再有

随机推荐

  • mongodb db.collection.find({}) 不执行任何超过 .limit(101) 的操作

    node mongodb 版本 2 0 43 和 MongoDB shell 版本 3 2 5 Centos虚拟机 我有一个 无上限 1600 个文档的集合 不是很大 并且所有文档都有标准的 BSON ids if I do db coll
  • sonar.analysis.mode 参数的替代方案

    我正在使用 Sonarqube 7 9 和 Gitlab 以及 Maven docker 映像 该映像使用以下命令调用我的 Sonarqubemvn batch mode verify sonar sonar DskipTests true
  • JavaFX 屏幕分辨率缩放

    我一直在寻找一种方法来做到这一点 但我只找到了这个问题没有答案 https stackoverflow com questions 32453173 javafx scale elements to screen resolution 我正
  • 在内联 GNU 汇编器中获取字符串长度

    我正在重新学习我在非常旧的 MS DOS 机器上使用的汇编程序 这是我对该函数应该是什么样子的理解 它编译但崩溃了SIGSEGV当试图把0xffffffff in ecx 该代码在具有 32 位 Debian 9 的 VM 中运行 如有任何
  • Matlab:二维数组,行不同长度

    在Matlab中 我想创建一个二维数组 但是 我无法创建矩阵 因为行的长度都不同 我是 Matlab 新手 我通常会在 C 中通过创建一个指针数组来完成此操作 每个指针都指向其自己的数组 我应该如何在Matlab中做到这一点 谢谢 您可以使
  • 上传和图像压缩

    我在客户的一个网站上使用 Uploadify 允许他们一次将大量图片上传到他们的照片库 我最近发现了一些问题 他们似乎上传大照片 3 MB 及以上 我想知道 是否可以在客户端压缩 减小它们的大小 而不是在服务器上进行压缩 就像 facebo
  • 从 Excel VBA 访问 Lotus Notes 数据库 - 如何选择 COLUMNVALUES?

    我正在研究将 Notes 数据库中的数据直接提取到 Excel 中 因为我们的财务人员正在手动重新输入数字 到目前为止 这是我的代码 子注释BB Const DATABASE 1247 Dim r As Integer Dim i As I
  • 如何从 Android 模拟器对 kik 的服务器 API 进行逆向工程?

    我有一个群聊基克信使 http kik com 会员数量已超过50人 我需要自动化一些事情 例如基于参与度的声誉点 以及踢掉 XXX 天没有发布任何内容的不活跃会员 我看过API参考 https dev kik com docs messa
  • 为什么 Google Chrome 模拟器以 375x667 分辨率显示 iPhone 6?

    我正在尝试以编程方式调整我的网站的图像大小以适应不同大小的设备 但现在我很难判断我真正需要的尺寸 在 Google Chrome 模拟器中 我看到一些图像放大了 例如在 iPhone 6 上从 230x230 自然显示到 357x357 该
  • 在每个像素的基础上快速比较两个位图对象

    我目前正在实现一种接受两个位图对象的方法 我们可以假设所述对象具有相同的尺寸等 该方法的返回是像素变化的列表 这存储在自制对象中 这是以迭代方式开发的 因此当前的实现是一个基本的实现 只需处理每个像素并将其与对应的像素进行比较 这种生成更改
  • Makefile 和“重定位具有无效的符号索引”错误

    我正在尝试编写我的第一个 makefile 在我的项目中 我有这些文件 main c list c list h Makefile 其中甚至没有函数定义或声明 只是简单的include list h 并 clean main 来测试编译过程
  • 鼠标悬停时播放 vimeo 视频

    我在一个页面中有四个 vimeo iframe 我想在鼠标悬停时播放视频并在鼠标移开时暂停视频 以下代码有效 但仅适用于最后一个视频 我该如何修改它才能适用于所有视频 wrapper width 85 margin left auto ma
  • 如何使 cpack 不向 RPM 添加所需的库?

    我正在尝试将工作中的构建系统转换为 cmake 但它生成的 RPM 通过 cpack 遇到了一个有趣的问题 它会自动将它认为您的 RPM 具有的所有依赖项添加到其所需的列表中图书馆 总的来说 这很好 但对我来说 这是灾难性的 不幸的是 我们
  • 在 Javascript 和 AngularJS 中解析 CSV

    因此 我尝试创建一个基本的角度应用程序来解析一些 CSV 输入 并用解析的数据填充表格 你可以在这里看到我想要实现的目标 http plnkr co edit 6QFT4AcV4KpiSG23EdOS http plnkr co edit
  • 辅助功能:使用 aria-live 的页面加载器指示器

    Issue 我有一个正在努力解决的可访问性问题 我有一个有角度的网络应用程序 加载内容时会显示页面加载旋转器 指示器 当页面内容加载后 微调器将被隐藏 这个 div 永远不会从 DOM 中删除 当显示加载 div 时 不会读取加载 div
  • 是否可以在 Xcode 中打开 SpriteKit 的现场调试绘图?

    是否可以在 Xcode 中打开 SpriteKit 的现场调试绘图 我的意思是像下面的图片 来自 WWDC 2014 会议 608 将以下内容添加到您的视图控制器中 Swift skView showsFields true ObjC sk
  • 如何用值 X 替换子字符串 [ ]

    我在 Java 中有如下字符串 String Value You are my star dear 我只想更换 有价值X 下面尝试过 什么都没起作用 ReplaceAll X ReplaceAll X ReplaceAll X 替换方法有3
  • Fortran 错误 5082

    我对 Fortran 很陌生 我正在尝试编译这个 Fortran 我认为是 90 代码 我正在使用带有英特尔编译器的 Visual Studio 下面的代码给我一个错误 5082 我完全不知道为什么 就像字面上没有任何线索 拜托 请帮忙 i
  • 比 supertrait 具有更严格关联类型界限的特征

    我有一个简单的特征 其关联类型没有限制 trait Board type Move fn moves self gt Vec
  • 如何开启icc/icpc警告?

    我在Linux上安装了英特尔编译器composer xe 2013 sp1 3 174 我对国际刑事法院的警告感到困惑 使用简单的程序 main c 馈送 icc 如下所示 int main int argc char argv int a