专栏首页C语言入门到精通基础知识 | 每日一练(105)

基础知识 | 每日一练(105)

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

学生:为什么声称兼容 ANSI 的 Frobozz Magic C 编译器不能编译这些代码?我知道这些代码是 ANSI 的, 因为 gcc 可以编译。

小林:许多编译器都支持一些非标准的扩展, gcc 尤甚。你能确认被拒绝的代码不依赖这样的扩展吗?通常用试验特定的编译器来确定一种语言的特性是个坏主意;使用的标准可能允许变化, 而编译器也可能有错。

学生:好像有些在意实现定义 (implementation-defin-ed)、未明确 (unspecified) 和无定义 (undefined) 行为的区别。它们的区别到底在哪里?

小林:简单地说: 实现定义意味着实现必须选择某种行为并提供文档。未明确意味着实现必须选择某种行为但不必提供文档。未定义意味着任何事情都可能发生。标准在任何情况下都不强加需求; 前两种情况下, 它有时建议一组可能的行为 (也可能要求从中选择一种)。

注意既然标准对无定义行为没有强制要求, 编译器就绝对可以做任何事情。特别地, 对程序其它部分的正常运行没有任何保证。

本文分享自微信公众号 - C语言入门到精通(gh_780327809188)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基础知识 | 每日一练(172)

    士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ...

    闫小林
  • 基础知识 | 每日一面(76)

    小林:某些构造随编译器和硬件的实现而变化, 这一直是 C语言的一个特点。这种有意的不严格规定可以让编译器生成效率更高的代码, 而不必让所有程序为了不合理的情况承...

    闫小林
  • 基础知识 | 每日一面(74)

    小林;问题在于连接器既不受 ANSI/ISO 标准的控制也不遵守 C 编译器开发者的规定。限制仅限于标识符开始的几个字符而不是整个标识符。在原来的 ANSI 标...

    闫小林
  • eclipse中安装spring Tool自动补全插件,命名空间

    打开eclipse编译器,然后选择help ->elipse Marketplace

    沁溪源
  • 高级编译器设计与实现(Steven.S.Muchnick).(中文版)

    本书是经典的编译器著作,与“龙书”齐名。书中针对现代语言和体系结构全面介绍了编译器设计与实现的高级论题,从编译器的基础领域中的高级问题开始,然后深入讨论了各种重...

    用户3157710
  • 程序员大神教你学C语言/C加加编程零基础新手入门

    第一章:编译器和程序 很多小伙伴都老是会碰到疑问,其实还是基础没打扎实,这些题如果你不看答案你能知道多少呢?如果还有很多不知道就证明基础没打扎实,如果你还在入门...

    企鹅号小编
  • 编译器的结构|编译原理

    今天的内容是冠以编译器的结构。(翻译内容可能不太准确,谅解,凑合看吧)

    仇诺伊
  • 基础知识 | 每日一面(76)

    小林:某些构造随编译器和硬件的实现而变化, 这一直是 C语言的一个特点。这种有意的不严格规定可以让编译器生成效率更高的代码, 而不必让所有程序为了不合理的情况承...

    闫小林
  • 陈天奇:深度学习编译技术的现状和未来

    深度学习编译器的部署目标传统的深度学习框架也可以做,一个非常自然的问题是为什么不直接沿用传统的框架。这是一个编译器研究者来往往会忽略的问题。深度学习编译器只有在...

    机器之心
  • 综述 | 深度学习编译器架构

    转载于:知乎黄浴博士,https://zhuanlan.zhihu.com/p/139552817,已获授权

    计算机视觉联盟

扫码关注云+社区

领取腾讯云代金券