【问题标题】:Where can I find the C specification? [duplicate]我在哪里可以找到 C 规范? [复制]
【发布时间】:2023-04-10 05:53:01
【问题描述】:

我现在可能有机会向一些学生教授 C 语言。大学想教他们纯 c,而不是 c++,以保持高级 c++ 课程分开。

既然 c++ 是从 c 派生的,那么是否有一个官方的“c 规则手册”包含 c 的所有特性,但没有 c++ 特性?我想知道的原因是我可以查找需要教给学生的内容。

我曾经看过一本(2000 页?)关于 c++ 标准的手册。对于c来说,这样的事情是否存在,即使它现在已经20/30岁了?

问候, 埃德

编辑:我应该指出,我已经自学了 3 年,非常了解 C/C++。我唯一不知道的是什么是“官方”C,什么是“官方”C++。这就是我要学习的目标,这样我就可以为其他学生提供比我自己更好的教育。

【问题讨论】:

  • 顺便说一句 - C++ 可能最初是从 C 派生的,但从那时起,两者在某些重要方面发生了分歧。只教常见的子集可能对学生不利。
  • 在尝试教授您的学科之前先了解它。
  • @n.m.我是一名学生,我已经自学了大概 3 年了。我几乎是一名专家,我要求提供这些信息的原因是为了让我的学生比我自己教的更好。
  • “我几乎是专家”——你可能是专家,但你问的是我认为是新手级别的问题。任何半熟练的 C 程序员都应该知道存在哪些 C 标准的主要版本以及它们之间的区别。也许不是很详细,但他们应该至少具备该主题的一些一般知识。
  • 我建议你从你的词汇表中去掉“C/C++”这个词,尤其是在教学生的时候。 C 和 C++ 是两种密切相关但截然不同的语言。特别是,大多数有效的 C 代码是有效的 C++ 代码,但大多数编写良好的 C 代码不是编写良好的 C++ 代码。

标签: c standards


【解决方案1】:

您正在寻找 C 标准。由于标准机构通过销售标准出版物来资助自己,因此您无法获得最终版本。但是,有许多 C 草案标准的副本足以满足您的目的。

https://www.google.com/search?q=c+draft+standard+pdf

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

【讨论】:

  • @KeithThompson “确切地说,”N1124 是 C99TC2 正式发布后不久的草稿,而 N1256 是 C99TC3 正式发布前不久的草稿。出于某种原因,如果一个人不小心,它会首先出现在 Google 搜索中。它仅在需要免费提供的 C99TC2 近似值时才有用。
  • @PascalCuoq:对。 N1124 是 N1256 出来之前最好的版本;这可能就是它仍然出现在搜索结果中的原因。
【解决方案2】:

有 3 个官方 ISO C 标准,分别于 1990 年、1999 年和 2011 年发布。还有几个“技术勘误”,即对标准进行更正的官方文件。

可以从ISO 或您的国家标准机构(例如美国ANSI)购买PDF(或纸质)格式的标准本身。 ANSI 以大约 30 美元的价格出售 C11 标准,但有严格的许可要求。技术勘误可自行免费获得,但如果没有标准,它们将毫无用处。如果您想让您的班级可以使用该标准,那么这可能不是一种实用的方法。

但 C 标准的草案通常在 ISO C 委员会的网站上提供。

N1256 是 C99 标准的草案,其中合并了三个技术勘误。在大多数情况下,它实际上比官方 C99 标准更好。

N1570 是 2011 年 ISO C 标准的最新(据我所知,在我撰写本文时)草案,在 ISO 标准发布之前发布。 N1570 与官方标准之间只有一些细微的编辑差异。

C11 标准还有一个小的技术勘误,其中包含 N1570 或 C11 中没有的几个修复:由于疏忽,已发布的标准没有定义 __STDC_VERSION__ 的值和可选的__STDC_LIB_EXT1__ 宏正确(两者都是201112L)。

每个标准(和草案)都总结了它与以前标准之间的差异。

除了标准(不是真正为一般程序员编写的)之外,Harbison & Steele 的C: A Reference Manual 是一个很好的参考。当前的第 5 版涵盖 C90 和 C99,但不包括 C11。 (我不知道第 6 版的任何计划。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-07
    • 2018-11-11
    • 1970-01-01
    • 2022-09-27
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多