GCC默认main返回值不为零

2023-11-28

我有一些没有从 main 显式返回的 C 程序,如下所示:

int main(int argc, char *argv[])
{
  // blah blah
}

如果我使用 GCC 4.6.3 和以下选项编译它们:

gcc file.c -Wall -Wextra

程序不会返回 0 并给我带来问题,但标准(以及许多其他答案)说:

如果 main 函数的返回类型是与 int 兼容的类型,则从初始调用 main 函数返回相当于以 main 函数的返回值作为参数调用 exit 函数;[10]到达终止 main 函数的 } 返回值 0。如果返回类型与 int 不兼容,则返回到主机环境的终止状态是未指定的。

[10] 根据 6.2.4,在 main 中声明的具有自动存储持续时间的对象的生命周期将在前一种情况下结束,即使它们在后一种情况下不会结束。

我的程序返回不同的值,160、15、14...垃圾?

我错过了什么吗?这是海湾合作委员会的错误吗?在 GCC 在线文档中找不到任何内容。 GCC 是否仍然引用某些旧的 C 标准(C99 之前的版本),但无法指定?


默认情况下gcc is -std=gnu89这是C90 + GNU 扩展。

C90 说:

(C90,5.1.2.2.3)“如果主函数执行没有指定任何值的返回,则返回到主机环境的终止状态是未定义的”

编译为-std=c99 or -std=gnu99返回值为0当 main 函数中省略 return 时。

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

GCC默认main返回值不为零 的相关文章

  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单

随机推荐

  • PHP 为每个页面添加导航栏技术?

    我正在尝试通过包含文件来合并每个页面的代码来清理我的 php 网页中的代码 如下所示 文件 head php 文件 页脚 php
  • 节点js SMTP错误

    我正在通过我的 godaddy 电子邮件帐户发送电子邮件 为此 我使用 Node js 发送电子邮件 但它给出以下错误 Error getaddrinfo ENOTFOUND code ENOTFOUND errno ENOTFOUND s
  • 如何使用节标题调整 UITableViewController 中 UITableView 的大小

    我在 UITableViewController 中有一个分组的 UITableView 我想水平调整它的大小 我尝试了很多不同的方法 但没有一个是完美的 我尝试过的 1 覆盖 UITableView setFrame 但它没有移动各部分的
  • 保持数据库连接打开的成本是否昂贵?

    我正在与一些软件开发人员开会 他们建议我在我的应用程序代码中尽快关闭数据库连接 有人可以告诉我在应用程序中保持连接打开有什么危害吗 我正在从数据库的单个表中读取数据 把它想象成公共汽车上的座位 当您打开连接时 您会填满这些座位 最终 公共汽
  • 如何在 Google App Engine 启动器启动时禁用自动检查更新?

    我一直在研究 GAE 并且喜欢 Windows SDK 提供的 GAE 启动器的易用性 我的问题是 当我启动应用程序时 它需要很长时间才能响应 这是因为程序在启动应用程序之前首先检查更新 这会导致它在等待响应时挂起 我的问题是我的主要开发计
  • Java - SimpleDateFormat 解析 12:19:00 到 00:19:00

    我正在尝试解析迄今为止的字符串 但输出看起来不正确 下面是我的代码 public static void main String args Date startDate new Date DateFormat formatter new S
  • 如何从 base64 数据 URI 在服务器端保存 PNG 图像

    我正在使用 Nihilogic 的 Canvas2Image JavaScript 工具将画布绘图转换为 PNG 图像 我现在需要的是使用 PHP 将此工具生成的这些 base64 字符串转换为服务器上的实际 PNG 文件 简而言之 我目前
  • mysql ...in where 子句不明确

    SELECT cat CategoryID as CategoryID count p ProductID as CountProducts FROM Category as cat LEFT JOIN Products as p on p
  • WordPress如何使用jquery和$符号

    我在 WordPress 插件中有一个简单的 jQuery 脚本 它使用如下 jQuery 包装器 document ready function jQuery code is in here 我从 WordPress 仪表板中调用此脚本
  • 我可以在 Google Cloud Function 中访问 GraphicsMagick for ImageMagick 吗?

    我想制作一个 Google Cloud Function 来正确设置上传文件的内容类型 我知道如何使用 GraphicsMagick 或 ImageMagick 执行此操作 但我不确定 Google Cloud Function 是否具有这
  • 将对象反序列化为现已签名和版本控制的程序集

    我曾经使用 BinaryFormatter c 序列化树视图 执行此操作并包含所有可序列化类的程序集现在具有强名称并已签名 并且还获得了新的版本号 但是 实现没有改变 当我尝试反序列化 byte 数组时 该行 TreeViewData bi
  • 如何使用 Python 和 Numpy 计算 r 平方?

    我正在使用 Python 和 Numpy 来计算任意次数的最佳拟合多项式 我传递 x 值 y 值和我想要拟合的多项式次数 线性 二次等 的列表 这很有效 但我还想计算 r 相关系数 和 r 平方 确定系数 我将我的结果与 Excel 的最佳
  • javascript 检查结束日期是否大于或等于开始日期

    是否可以检查 Javascript 中的结束日期是否大于或等于开始日期 我的日期是格式为 dd mm yyyy 的字符串 try this var startDate 05 01 2011 var endDate 09 01 2011 va
  • x86 上存储到加载转发失败的成本是多少?

    在最新的 x86 架构上 存储到加载转发失败的成本是多少 特别是 存储到加载转发会失败 因为加载部分与较早的存储重叠 或者因为较早的加载或存储跨越某些导致转发失败的对齐边界 当然存在延迟成本 它有多大 是否还存在吞吐量成本 例如 失败的存储
  • 在 Windows 8 中将用户重定向到桌面浏览器

    如果用户使用 Windows 8 RT 浏览器访问我的网页 是否有办法强制或提示用户使用 Windows 8 桌面浏览器 我希望能够使用 Silverlight 等插件 是的 您可以提示用户切换到桌面版本 微软将其添加为需要它的网站的后备
  • 如何在 Git 历史记录中 grep(搜索)已提交的代码

    我过去删除过一个文件或文件中的某些代码 我可以搜索内容 而不仅仅是提交消息 吗 一个非常糟糕的解决方案是 grep 日志 git log p grep
  • 将子 iframe 中的事件附加到父窗口中的处理程序

    我无法直接访问此 iframe 的源代码 因此如果可能的话 我想这样做 我有一个由 JS 生成的 iframe 里面有一个提交按钮和一个取消按钮 提交按钮工作正常 但我希望取消按钮关闭包含 iframe 的此模式 我还希望提交按钮发送 th
  • 如何在 ASP.NET 5 Identity 中设置PasswordHasherCompatibilityMode.IdentityV3?

    目前看来默认设置为PasswordHasherCompatibilityMode IdentityV2这是 ASP NET 5 中的 HMAC SHA1 我尝试创建一个实例PasswordHasherOptions添加到服务 DI 但无法使
  • 用户控制验证组问题

    我在页面上有两个用户控件实例 两者都有字段和一个提交按钮 我已经在字段和验证器上设置了验证组 但由于某种原因 在验证两个用户控件的验证器时会触发 这个方法也有效 Dim valGroup String format 0 validation
  • GCC默认main返回值不为零

    我有一些没有从 main 显式返回的 C 程序 如下所示 int main int argc char argv blah blah 如果我使用 GCC 4 6 3 和以下选项编译它们 gcc file c Wall Wextra 程序不会