最严格的 C 代码的 GCC 选项? [复制]

2024-03-17

应该设置哪些 GCC 选项以使 GCC 尽可能严格? (我的意思是尽可能严格)我正在用 C89 编写并希望我的代码符合 ANSI/ISO 兼容。


我建议使用:

-Wall -Wextra -std=c89 -pedantic -Wmissing-prototypes -Wstrict-prototypes \
    -Wold-style-definition

你应该编译-O-g因为有些警告仅在使用优化器时才会出现(实际上,我通常使用-O3以发现问题)。您可能更喜欢-std=gnu89因为这会禁用库中更少的扩展。 OTOH,如果您按照严格的 ANSI C89 进行编码,也许您希望禁用它们。这-ansi选项相当于-std=c89但不太明确或灵活。

缺少的原型会警告您有关在范围内没有原型的情况下使用的函数(或定义的外部函数)的信息。严格的原型意味着您不能在函数声明或定义(或函数指针)中使用“空括号”;你要么需要(void)或正确的参数列表。旧样式定义包含 K&R 样式函数定义,例如:

int old_style(a, b) int a; double b; { ... }

如果你幸运的话,你就不需要担心这个问题。我在工作中就没那么幸运了,而且我不能使用严格的原型,这让我很懊恼,因为周围有太多草率的函数指针。

也可以看看:清理代码的最佳命令行工具是什么 https://stackoverflow.com/questions/393208/what-is-the-best-command-line-tool-to-clean-up-code/

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

最严格的 C 代码的 GCC 选项? [复制] 的相关文章

随机推荐

  • 具有不同形状的 Tensorflow 数据集

    我使用卷积网络对不同形状的图像进行分类 我找不到在 Tensorflow 中加载图像的方法 基于这个问题 https github com tensorflow tensorflow issues 2354它应该与 tf data Data
  • 根据对象类型将视图注入 ItemsControl

    我有一项服务返回 Party 类型的数组 政党有两个子类型 个人和组织 我在 WPF 应用程序 Prism MVVM 中从视图模型使用此服务 在此视图模型的构造函数中 我填充了 Party 类型的可观察集合 public PhoneBook
  • python 多线程连接超时

    看起来 如果你有一个n个线程的循环 并将它们与超时t逐一连接 那么你实际花费的时间是n t 因为开始计算一个子线程的超时时间是最后一个子线程的结束时间 有什么办法可以将总时间减少到 t 而不是 n t 吗 是的 您可以计算绝对超时 并在每次
  • 跟踪集合的旧部分和新部分

    我正在使用backbone js 并且我有一个包含 dos 的集合fetch 有时 我不想通过该选项 add true 由于我的子视图的创建方式 集合被循环 每个项目都是附加到当前表的新行 我尝试的一件事就是清空整个表并创建所有新行 但这太
  • 为 Web 表单添加自定义基类

    我想为我的所有 Web 表单添加自定义基类 我在我的 asp net web 项目中创建了一个 App code 文件夹 并添加了一个简单的基页面类 如下所示 namespace MySite Web base page for all t
  • 打包Python项目时设置zip_safe为True有什么好处?

    setuptools 文档仅说明 为了获得最佳性能 Python 包最好安装为 zip 文件 然而 并非所有包都能够以压缩形式运行 因为它们可能期望能够像正常操作系统文件一样访问源代码或数据文件 因此 setuptools 可以将您的项目安
  • 无法以编程方式在外部存储上创建文件夹 - Android

    这是我的代码 boolean success false Log d TAG Environment getExternalStorageDirectory Environment DIRECTORY PICTURES myFolder m
  • 在浏览器中使用 NodeJS Crypto 模块和 webpack

    我正在编写一个 javascript REPL 旨在在浏览器中运行并执行 nodejs 加密函数 我的项目是在 ReactJS 中 我使用 webpack 将所有模块和依赖项捆绑在一起 我试图将内置节点加密模块包含在 webpack 生成的
  • TypeScript 到 JSDoc:全局/接口

    我目前正在使用 JSDoc 将项目从 TypeScript 转换为 JavaScript 我正在尝试使用 JSDoc 执行以下操作 declare global namespace jest interface Matchers
  • ld:找不到 -lz.1.2.3 的库

    当尝试编译适用于 iOS 5 的软件时 XCode 4 2 抛出错误 ld library not found for lz 1 2 3 我发现这篇文章告诉我替换 1 2 3 与 1 2 5 https github com dbloete
  • Flexslider - 图像预加载器

    我的响应式 flexslider 插件有问题 除非实际幻灯片中有很多图像 否则该插件可以正常工作 那么加载行为是不可接受的 我希望有人可以帮助我使用以下 flexslider 图像预加载器脚本 因为我无法让它工作 这是我正在使用的代码 柔性
  • 在 R Shiny 标头中制作图像超链接

    我一直在尝试将图像输出超链接到网站 但我在仔细阅读有关堆栈溢出的其他问题时遇到了麻烦 带有闪亮的可点击链接的 svg 不可点击 https stackoverflow com questions 37121767 svg with clic
  • Html5 的文件 API - BLOB 用法?

    我有一个文件输入 jsbin http jsbin com atICecog 4 edit
  • 如何修复在多人或组字段中添加用户时 SharePoint 中的错误(仅限人员)

    我正在尝试在 Sharepoint 列表中的多人或组字段 仅限人员 中添加多个用户 但我收到以下错误消息 从 JSON 读取器读取时发现意外的 PrimitiveValue 节点 预期是 StartObject 节点 我已使用 REST 调
  • Rails 应用程序移至生产服务器时出现“符号转储格式错误”错误

    我刚刚将 Rails 应用程序从开发服务器移至部署服务器 我已经安装了乘客 但我想尝试一下rails s确保一切运行良好 这是我第一次开发和部署 Rails 应用程序 规格为 带有 RVM mod passenger Rails 3 2 3
  • WCF发送大量数据

    我想将大量数据发送到 WCF 服务 数据可能由数千个 od 记录 实体 组成 具体取决于解析的输入文件 现在的问题是 发送这些数据的最佳方式是什么 A 逐条记录 通过这个 我将确保我不会超过允许的最大消息大小 并且我可以从 las 成功发送
  • pandas.read_clipboard 来自云托管的 jupyter?

    我正在服务器上运行 JupyterHub 的 Data8 实例 并运行 JupyterLabpd read clipboard 似乎不起作用 我在谷歌colab中看到同样的问题 import pandas as pd pd read cli
  • 具有固定不均匀行的 HTML 表格

    I m creating a page that allows the user to select a time slot from a schedule I would prefer to do this with some sort
  • PhoneRTC 64 位支持吗?

    PhoneRTC http phonertc io 目前不支持 64 位设备 从2015年2月1日起 Apple 要求所有 iOS 应用程序支持 64 位设备 https developer apple com news id 102020
  • 最严格的 C 代码的 GCC 选项? [复制]

    这个问题在这里已经有答案了 应该设置哪些 GCC 选项以使 GCC 尽可能严格 我的意思是尽可能严格 我正在用 C89 编写并希望我的代码符合 ANSI ISO 兼容 我建议使用 Wall Wextra std c89 pedantic W