ISO C标准(ISO/IEC9899)和ISO C++标准(ISO/IEC 14882)不是在线发布的;相反,用户必须购买这些标准的PDF.我想知道这背后的原因是什么.C和C++编程语言的权威规范不能在网上免费获得和搜索,这不是对这两种语言都有害吗?这难道不鼓励使用可能不准确的、非权威的来源来获取有关这些语言的信息吗?

虽然我理解在开发C和C++标准上花费了大量的时间和精力,但我仍然对 Select 为规范收费感到有点困惑.例如,OpenGroup Base Specification人可以在网上免费获得;他们通过收取认证费用来赚钱.有人知道为什么ISO标准委员会不通过认证标准遵从性来赚取收入,而是对这些文件收费吗?另外,有没有人知道ISO标准委员会的atrociously looking website是故意弄成那样的吗?这就好像他们不想让人们参观和购买规格.

最后一件事...C和C++标准通常被描述为"开放标准"…虽然我意识到这意味着任何人都可以实施该标准,但"开放"的定义是否应该修改?对标准收费而不是公开提供似乎违背了开放的精神.

另外,我确实有一份ISO/IEC9899:1999和ISO/IEC2003:2003的副本,所以请不要 comments 它便宜或任何东西.不过,如果你想说这样的话,你可能要考虑一下高中、本科生和研究生,他们可能没有那么多多余的钱.另外,你可能想要考虑到这样一个事实,即ISO网站确实很粗略,他们甚至不会告诉你费用,直到你开始 checkout .并不是真的鼓励人们go 买一本,不是吗?

Edit / Comment
It occurs to me that if the ISO standards committees were to make their revenues from certification that it would incentivize smaller but more frequent changes to the standard rather than very large revisions very infrequently. It would also incentivize creating an implementable standard (I doubt the ISO C++ committee would have introduced "export" in the first place if they got their revenues from certification).

我已经找到了一个解决方案,解决了没有PDF在线的烦恼之一....我已经将我的标准副本上传到我的谷歌文档中,这样我仍然可以从任何计算机上访问它,而无需随身携带.

推荐答案

值得一提的是,赫伯·萨特写了一篇关于这个问题的文章, comments 中有不少讨论:

正如他所说,"开放"不一定是"免费".如果学生或其他经济能力有限的人可能想要这些文档的免费版本,请注意:

  1. 许多学生可能想要(甚至被要求访问)的参考资料都不是免费的.
  2. 对于大多数工作来说,标准根本不是必需的-有大量免费可用的文档,对于几乎任何人都可能想要用C或C++完成的大部分工作来说,这些文档已经足够了
  3. 在许多情况下,文档草稿可以免费下载;虽然它们不是the标准的,但最终的草稿版本非常接近,可能足以满足许多用途.

如果您对C或C++编程是认真的,我建议您应该有一份标准副本(尽管我不会说这是必需的).我还建议,不应该期望它们是免费的,就像任何职业或业余爱好一样,"行业工具"通常不是免费的-无论这些工具是像锤子这样的实物,还是像手册或规范这样的信息.

事实上,我认为,如果你只能有一个或另一个标准,或者你开始(你可能想要两个不同的C++,而哈比森和斯梯尔是C所需要的),那么一组好的引用将比一套标准要好.

不要误解我的意思-我并不反对免费提供它们(我很高兴它们目前相当便宜),但我不认为有任何理由期望它们是免费的.

SO问题的答案是"Where do I find the current C or C++ standard documents?",它们指向廉价版本和免费草稿版本.另请注意,当前的C99标准(合并了TC1和TC2)可免费下载:

需要注意的是,N1124"是WG14工作文件,但它反映了发布时的合并标准".

C++相关问答推荐

定义_MISIX_C_SAL时,在MacOS上编译失败,并出现奇怪错误

理解C中的指针定义

如何确保内存分配在地址附近?

为什么已经设置的值在C中被重置为for循环条件中的新值?

getchar读css + z还是返回css?

由Go调用E.C.引起的内存快速增长

在C中使用JMP_buf数组进行线程化(在xv6中测试)

有没有更简单的方法从用户那里获取数据类型来计算结果

用C宏替换strncMP函数中的参数

为什么指针运算会产生错误的结果?

为什么双精度d=flt_max+flt_max;在c语言中得到inf的结果

等同于铁 rust 的纯C语言S未实现!()宏

如何仅使用软件重新初始化STM32微控制器中的USB枚举?

C语言中的外部关键字

使用ld将目标文件链接到C标准库

生产者消费者计数器意外输出的C代码

问题:C#Define上的初始值设定项元素不是常量

我的代码可以与一个编译器一起使用,但不能与其他编译器一起使用

指向返回 struct 成员的指针,安全吗?

为什么INT_MIN是在c语言的头文件limits.h中定义的(-INT_MAX-1)而不是直接使用-2147483648