【问题标题】:Resource that briefly describe the C and C++ standards简要描述 C 和 C++ 标准的资源
【发布时间】:2011-12-26 19:06:31
【问题描述】:

在这里得到一个错误的答案后,因为我不是最新的 C 标准,我开始寻找一些地方来描述 C 和 C++ 标准中的内容。

我不想要完整的标准,我在 Where do I find the current C or C++ standard documents? 中找到了链接,也不需要亲密的技术讨论。相反,我想要一些简要描述标准的东西,如果我想更彻底地检查它,请参考实际标准,并且可能会说明该功能是在哪个标准中引入的。

有这样的资源吗?

编辑:问题的一点背景知识:我已经编写 C 语言 20 多年了,当我了解到它时,并没有多少标准化。官方标准中的内容并未得到广泛实施。这些年来,我已经成为了足够优秀的 C 程序员,以至于我的朋友和大学在遇到问题时都会向我寻求帮助。

但是,当我学习 C 时,有人告诉我,多维数组的内存布局之类的东西是特定于实现的,当我看到有关该主题的问题时,我说它不是标准化的,只是被告知我错了。但即使知道这一点,我也很难找到任何地方说它在标准中,而且更难找到它最初是在哪个标准中引入的。

如果有地方说“多维数组的内存布局在 C9x 中标准化,在标准文档的 Y 部分”,那么很容易找到并将其提供给提出问题的人。我对实际布局并不感兴趣,只是它已经标准化,如果我真的想要一个明确的答案,我应该去哪里看。

这当然适用于其他事情。就像知道头文件“<yyy.h>”是由标准“C90”强制要求的,并且我应该在标准中寻找它的基本原理和内容。这些东西散开时很难找到,把它收集在一个地方会更容易找到。

【问题讨论】:

  • 有趣的问题,但在我从书籍和网上阅读和学习 C++ 的所有时间里,我从未遇到过这样的事情,所以如果我需要真正提供明确的证据,我会参考标准.在这个站点和 c++ 新闻组(comp.lang.c++ 及其主持的表亲)中有很多标准合规性讨论,但它是分布式的,而不是像你想要的那样,C++ Standard, Abridged and Annotated
  • “我对实际布局并不感兴趣,只是它已经标准化,如果我真的想要一个明确的答案,我应该去哪里看。”唯一的确定性答案将在标准中找到;其他所有人都是它的副本或简化版。而且大多数简化对某事物何时标准化的兴趣不如对如何使用它的兴趣。所以一般来说,你要找的东西根本不存在,因为大多数人不在乎。
  • @NicolBolas 但是,如果没有指向它的地方,你怎么知道在哪里找到?就像在关于数组布局的示例中一样,即使阅读WG14 N1256(这是最新的 C 标准出版物)也很难找到。它不在内容中,不在索引中。它隐藏在“后缀运算符”小节的一段中,这将是我首先考虑寻找类似内容的地方。
  • 不会是第一个看的地方,我的意思是在我的评论中。
  • 新的 C++ 标准实际上是一种阅读的乐趣,所以我很难推荐其他任何东西来取代它。它很长,但呈现得非常好,干净而精确。另一方面,C99 标准并不是很长,所以你也不妨直接去那里的源代码。

标签: c++ c standards


【解决方案1】:

任何标准的东西要么是不确定的,要么被简化到远没有用处的程度。任何确定的或真正有用的东西基本上都会成为标准。

我知道没有资源能够以简化的方式涵盖 C 标准的每个部分(甚至是相当多的部分),我怀疑它的用处。您通常有一个特定需要解决的问题,在这种情况下,您会搜索该特定问题 - 绝大多数人不需要标准,尤其是当他们触手可及 SO 之类的资源时。

如果您是一名语言实施者,或者喜欢在令人痛苦的细节中检查语言的阴暗角落,那么是的,获得标准,这是非常宝贵的。如果您只是日常使用该语言(即使作为专家),您也可以不使用它,只需在谷歌上搜索一下(a)


(a) 确保搜索词之一是site:stackoverflow.com :-)

【讨论】:

    【解决方案2】:

    标准中有太多材料,无法简单描述。我不认为你的问题真的可以回答。不过,如果您想参考标准库,Josuttis 的书 http://www.amazon.com/Standard-Library-Tutorial-Reference/dp/0201379260/ref=sr_1_1?ie=UTF8&qid=1320994652&sr=8-1 总是一个很棒的参考。

    【讨论】:

      【解决方案3】:

      我猜你已经熟悉了旧的标准,并想重温新的较少使用的东西。

      Here is a good read for C99. 它涵盖了更改并附有实际标准的注释。还有一些关于 C++ 的东西。

      Wikipedia is great for C++11. 非常适合基础知识,但没有详细介绍。

      如果您完全理解该语言,那么您通常可以推断出标准。对于奇怪的极端情况,您将不得不参考标准。

      【讨论】:

      • 我不认为这是一本关于 C99 的好读物,它非常肤浅并且排除了很多变化:restrict 关键字、指定的初始值设定项、可变长度数组、stdint 类型、bool 类型、扩展宽字符支持等。
      【解决方案4】:

      我发现http://en.cppreference.com/w/cpp 现在变得相当不错了! (总是更完整)

      【讨论】:

        【解决方案5】:

        我认为回答这个问题的其他一些人是对的:很少需要最终权威的 ISO 标准文档,除非您正在编写编译器或类似的东西。对我来说,我发现语言创造者关于这两种语言的主要书籍足以满足我几乎所有的需求。它们是:

        C 编程语言 作者:Brian Kernighan 和 Dennis Ritchie

        C++ 编程语言 by Bjarne Stroustrup

        查找每种语言的最新版本,尽管在亚马逊上快速搜索显示两者都没有针对这些语言的最新版本(C99 和 C++11)进行更新。您可能需要补充在线资源,或者查看A C Primer PlusProfessional C++

        【讨论】:

          猜你喜欢
          • 2023-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-22
          • 2021-12-30
          相关资源
          最近更新 更多