首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你所说的一致性和非一致性编译器是什么意思?

你所说的一致性和非一致性编译器是什么意思?
EN

Stack Overflow用户
提问于 2021-04-29 10:10:10
回答 3查看 124关注 0票数 0

我不知道什么是一致性编译器和非一致性编译器。我在谷歌上搜索并试图找到一致性编译器和非一致性编译器的定义,但不幸的是我找不到。所以我来这里是为了了解一致性编译器和非一致性编译器的定义。

EN

回答 3

Stack Overflow用户

发布于 2021-04-29 19:11:58

“Conform”意思是“遵守规则、标准或法律”。在C编程环境中,“一致性编译器”通常指的是符合C standard规则的编译器。“Conform”是一个通用的英语单词;我们也可以在其他意义上使用它,也就是说编译器符合它自己的特定文档,而不仅仅是C标准,或者符合商业合同或各种技术规范设置的规则。短语所处的上下文有助于确定其含义。

C标准为C程序的语法和语法以及解释和执行它们指定了许多规则。符合这些规则的编译器是符合规则的编译器。

实际上,编译器只是C实现的一部分。完整的C实现通常包括编译源代码以生成目标模块,链接目标模块以生成程序,以及在具有操作系统和支持软件库的计算硬件上执行该程序。它需要所有这些东西来形成一个完整的C实现。但是,如果编译器在这方面做了自己的工作,我们可以说它是符合的。

C标准规定了符合标准的编译器必须满足的最低规则,但它也允许编译器通过执行C标准中不需要的附加操作来扩展C语言。因为扩展是允许的,所以带有扩展的编译器可能仍然是一致的。

票数 3
EN

Stack Overflow用户

发布于 2021-04-29 17:31:46

大多数情况下,“符合”意味着“能够符合C语言规范中的所有内容(忽略任何可选的配置/设置,比如GCC中的--fast_math命令行标志)”;而“不符合”就是其他一切。

对于“非一致性”,有一个常识限制--例如,如果编译器不尝试实现任何C语言(例如Pascal编译器),那么它在技术上就是“不符合C规范”,但声明这一点没有多大意义。这造成了一个可能的灰色地带(例如,一种非常接近C但不打算与C相同的新语言)。

对于“一致性”,也有一个常识限制-例如,如果一个C编译器只有一个小错误(在极其罕见的情况下)可能会导致它产生错误的(“非一致性”)输出;那么从技术上讲,它是“不一致性”,但几乎每个人都会称之为“一致性”。

票数 2
EN

Stack Overflow用户

发布于 2021-04-29 19:41:24

这些术语在C Standard的上下文中。

阅读标准中标题为“一致性”的第4章(只有一页)将是一个好主意。你可以使用上面的链接下载一个免费的草稿。第5章的前几页也与这个主题相关。

  • implementation是获取程序源代码并最终执行程序的整个机制的正式术语。这通常包括生成可执行二进制文件的转换阶段,然后执行该二进制文件。

  • 当人们说“编译器”时,他们通常指的是实现的所有翻译阶段,并谈论“编译”整个翻译过程的程序,产生可执行的二进制文件。但有时“编译器”和“编译”的含义较窄,仅限于翻译阶段的一个子集。这在该标准的第5.1.1节中有所涉及。

符合

  • 的实现由第5.1.2.3节(在第5章中)定义。它意味着一种实现,它可以获取任何程序,并执行该程序,以根据该程序的标准指定的输出产生正确的输出。

代码语言:javascript
复制
- When people talk about "conforming compiler", it's implied that they refer to an implementation consisting of that compiler (and any related utilities) plus its target execution environment.
- For some programs the Standard may specify that they may (or must!) fail translation, and/or that there is no defined behaviour upon execution. For such programs, translation failure or any output whatsoever is considered to be correct output.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67310135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档