clang 编译器的“-Weverything”选项包括什么以及它的记录在哪里?

2024-01-05

clang,但不是 gcc,有一个-Weverything选项哪个appears包括诸如-Wpedantic。您可以在这里测试:https://godbolt.org/z/qcYKd1 https://godbolt.org/z/qcYKd1。请参阅窗口的右上角,了解我输入的内容-Weverything作为显式编译器选项。

注意-Wvla-extension由于在本例中我们依赖于 C++ 中的 C99 扩展,因此我们得到了警告,并且我们有-Weverything放。如果我们只使用,我们会得到相同的警告-Wpedantic,如下所示:https://godbolt.org/z/M9ahE4 https://godbolt.org/z/M9ahE4,表明-Weverything事实上包括-Wpedantic.

We get 没有警告如果我们没有设置这些标志:https://godbolt.org/z/j8sfsY https://godbolt.org/z/j8sfsY.

Despite -Weverything存在并在 clang 中工作,但是,我在 clang 手册页和在线手册中都找不到任何有关其存在的文档:https://clang.llvm.org/docs/DiagnosticsReference.html https://clang.llvm.org/docs/DiagnosticsReference.html。也许我找错地方了?我对 clang 的手册不太熟悉。

那么,什么是-Weverything包括并记录在哪里?

做类似的事情似乎合乎逻辑-Wall -Werror -Weverything,但我不知道这与仅仅有什么不同-Wall -Werror.


糟糕!我刚刚找到了。

主要 clang 文档索引页面的底部:https://clang.llvm.org/docs/index.html https://clang.llvm.org/docs/index.html在最底部的“索引和表格”部分下,有一个“搜索页面”链接。使用该链接,这是我对“-Weverything”的搜索:https://clang.llvm.org/docs/search.html?q=-Weverything https://clang.llvm.org/docs/search.html?q=-Weverything,这让我看到了这里的官方文档!:https://clang.llvm.org/docs/UsersManual.html?highlight=weverything#cmdoption-weverything https://clang.llvm.org/docs/UsersManual.html?highlight=weverything#cmdoption-weverything。完毕!就在那里!

也可以看看:https://clang.llvm.org/docs/UsersManual.html?highlight=weverything#diagnostics-enable-everything https://clang.llvm.org/docs/UsersManual.html?highlight=weverything#diagnostics-enable-everything

我真正关心的部分(强调):

Since -Weverything启用每一个诊断,我们通常不建议使用它。 -Wall -Wextra对于大多数项目来说是更好的选择。 Using -Weverything意味着更新编译器更加困难,因为您接触到的实验诊断可能质量低于默认诊断。如果你使用-Weverything那么我们建议您在将所有新的编译器诊断添加到 Clang 时解决它们,方法是修复它们找到的所有内容,或者显式禁用该诊断及其相应的诊断Wno- option.

所以,我的最终建议是使用-Wall -Wextra用于警告,但不-Weverything,以及个人而言,not -Wpedantic (or -pedantic--同样的事情),因为我经常依赖 gcc 编译器扩展来进行低级嵌入式工作和以硬件为中心的编程,尤其是在微控制器上。

我还强烈建议将所有警告强制转换为错误-Werror。这对于需要永久运行的安全关键代码和/或嵌入式固件尤其重要,因为它迫使您修复所有警告以使代码完全编译。所以,我的最终建议是这样的,正如我在下面的 github 存储库中进一步描述的那样:

# Apply "all" and "extra" warnings, and convert them all to errors
# to force you to actually abide by them!
-Wall -Wextra -Werror  

您可以在我的 GitHub 存储库中阅读我对此主题的更全面的观点和研究:https://github.com/ElectricRCAaircraftGuy/eRCaGuy_hello_world#build-notes https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world#build-notes.

额外说明:-Wpedantic == -pedantic:

在 gcc 中,它们是相同的:

  • 两者一起列出 https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html.

-Wpedantic
-pedantic

发出严格的 ISO C 和 ISO C++ 要求的所有警告...

在 clang 中,它们在测试和文档方面似乎也相同。铿锵也努力在语法和用法上与 gcc 兼容 https://clang.llvm.org/:“最终用户功能:”...“GCC 兼容性”。

  • -pedantic https://clang.llvm.org/docs/UsersManual.html?highlight=weverything#cmdoption-pedantic
  • -Wpedantic https://clang.llvm.org/docs/DiagnosticsReference.html?highlight=wpedantic#wpedantic

Related:

  1. 为什么我应该始终启用编译器警告? https://stackoverflow.com/questions/57842756/why-should-i-always-enable-compiler-warnings
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

clang 编译器的“-Weverything”选项包括什么以及它的记录在哪里? 的相关文章

随机推荐

  • Artifactory 大型下载失败

    我的连续传奇 I have Artifactory 专业版 5 8 4运行在CentOS 7 4使用 Artifactory 内置的系统Nginx作为反向代理的服务 大多数时候 在下载大对象时 连接失败 此外 在失败的连接中传输的最后几千字
  • 我可以在 XtraGrid 上将行单元格值设置为只读吗?

    如何在 XtraGrid 上使特定行单元格只读 不可编辑 例如 仅适用于 row 0 但不是所有行 您可以使用GridView CustomRowCellEdit http documentation devexpress com Wind
  • 警告:您将留下 1 个提交,未连接到任何分支

    Egit再次出击 我犯了一个错误 试图切换到 EGit 中的另一个分支 结果不知何故搞砸了 没有检查到任何分支 然后我对这个非分支进行了提交 然后当我意识到我没有跟踪正确的分支时 我运行了以下命令 git checkout issue2 W
  • css 标签的 html head 之间的有效区别?:@import url 与 link href

    之间是否存在有效差异 and 浏览器的行为是否有所不同 w3c等推荐什么 您应该使用的原因有几个代替 import 其中 2 个是 Using import可能会导致下载方式出现意外的排序 The import可能会导致空白白屏问题 htt
  • 嵌套宏扩展

    我不确定这是否是正确使用的术语 但是我的问题是宏调用 PLUGIN NAME 作为另一个宏调用 IMPLMENT MODULE 的参数 这反过来将其打印为字符串 打印该参数作为宏调用 somePLUGIN NAME 而不是扩展结果 some
  • 将 MySQL 查询结果显示为每行 HTML 表

    我尝试搜索 但没有找到任何对我有帮助的内容 所以我创建了一个新线程 我有一个包含多个列的 MySQL 数据库 每行都是一个项目的一组单独的数据 现在我已经设法将其显示得非常接近我想要的内容 但是为了获得更好的视图 我需要将其格式化为两列表
  • 从 MainMenu 获取特定菜单项

    我有一个包含窗口的笔尖 winA xib 我的应用程序委托包含一个名为 WinAController 的 NSWindowController 子类 WinAController 有一个属性 NSMenu mainMenu 我想将其指向Ma
  • 如何在react-slick轮播中执行slickNext方法?

    我有以下带有 Slick 轮播的 React 应用程序 我创建了一个自定义的 下一步 按钮 需要执行slickNext 方法继续到下一张幻灯片 Slick 轮播文档和一些问题的答案都提到了以下调用方式slickNext method 问题是
  • 在 Mac 10.9.5 上安装 PyCrypto 时出错

    我正在尝试为 Python 3 4 安装 PyCrypto 但 C 编译的程序出现问题 它说 错误 无法运行C编译的程序 有人知道如何修复它吗 code running build running build py running buil
  • 包含/排除 gulp.src 的 glob

    我正在尝试为我的 javascript concat 构建任务设置一个 glob 数组gulp 目录结构如下 about about js assets contact core navbar navbar js navbar test j
  • 使用 Gitlab 管道和 git 推送防止无限循环

    我有一个项目 其中有 4 个环境 开发 测试 暂存和生产 每个环境都有分支 分别是开发 测试 暂存主机 我们用npm version插入版本package json还要添加一个 git 标签 之后我们运行构建并成功后 我们推送由npm ve
  • ValueError:没有足够的值来解压(预期为 2,实际为 1)

    以下是我的代码 views py from django shortcuts import render from forms import MedicineForm from models import Medicine def inde
  • 将点击事件绑定到td vs table

    我想在 HTML 中构建类似 excel 的实用程序 假设我的 table id myTbl 有 20 行和 20 列 每当用户单击它并使用 td 文本作为其值时 我想在 td 内添加文本框 Suppose my table is 我有两个
  • 调用非托管函数 char 返回 char *

    我在非托管 C C 代码 dll 中有一个函数 它返回包含 char 数组的结构 我创建了 C 结构体来接收调用该函数时的返回值 调用此函数后 我得到 System Runtime InteropServices MarshalDirect
  • 如何仅在父元素中应用变换?

    我有 HTML div style color white height 1080px width 100 div class player controls a class right carousel control href span
  • 转换为 Web 应用程序错误 - 无法解析 aspx 文件

    我偶尔会在我的 aspx 文件中遇到错误 这些错误是由设计器文件的问题引起的 发生这种情况时 我删除设计器文件 右键单击 aspx 文件并选择 转换为 Web 应用程序 通常重新生成设计器文件效果很好 但有时我会收到一个错误 简单地说 无法
  • 如何将 NSBezierPath 附加到 CAShapeLayer

    我想知道是否有人可以帮忙 基本上我下面有一些 Objective C 代码 有谁知道如何将其附加到 Mac OS X 而不是 iOS 的 CAShapeLayer 上 Color Declarations NSColor fillColor
  • 如何配置VSCode的Organize Imports顺序?

    我想配置组织导入的顺序 此刻 它动了node modules相关的导入语句位于最顶部 以及本地ts文件位于最底部 Normal import myFunction from myFunction import fs from fs cons
  • 使 R 中 selectInput 的第一个元素闪亮显示为粗体

    我希望将 selectInput 的第一个元素 1 设置为粗体颜色 请帮忙 ui lt fluidPage selectInput select label h3 Select box choices c 1 2 3 4 server lt
  • clang 编译器的“-Weverything”选项包括什么以及它的记录在哪里?

    clang 但不是 gcc 有一个 Weverything选项哪个appears包括诸如 Wpedantic 您可以在这里测试 https godbolt org z qcYKd1 https godbolt org z qcYKd1 请参