这个问题与编程或特定语言概念没有直接关系。我的问题是我们是否可以使用对C
国际标准(例如C11
)的引用来提供规范引用来描述C
库中的任何概念在C++
。
更具体地说,在<climits>
中定义的标头N3797::18.3.3 [c.limits]
中,描述了C library
标头。但C
标准提供了有关<limits.h>
内容的更全面信息,而不是N3797
工作草案。
因此C library
中定义的C11
的所有内容都适用于C++
C++11
中定义的C library
实现,或者我们无法依赖C
标准提供了哪些内容?
答案 0 :(得分:9)
对于 C标准库 C ++回退到C标准,对于C++11,它回退到C99而不是C11,在C ++ 11之前引用的C标准是C90。这将在1.2
规范性参考部分中介绍,其中包含:
以下参考文件是必不可少的 本文件的应用。凡是注日期的引用文件,仅限版本 引用适用。凡是不注日期的引用文件,其最新版本为 引用文件(包括任何修正案)适用。
并包括:
ISO / IEC 9899:1999,编程语言 - C
ISO / IEC 9899:1999 / Cor.1:2001(E),编程语言 - C,技术勘误1
ISO / IEC 9899:1999 / Cor.2:2004(E),编程语言 - C,技术勘误2
ISO / IEC 9899:1999 / Cor.3:2007(E),编程语言 - C,技术勘误3
并且还说:
ISO / IEC 9899:1999第7章和第7章中描述的库 ISO / IEC 9899:1999 / Cor.1:2001和ISO / IEC第7条 9899:1999 / Cor.2:2003在下文中称为C标准库。 1
C ++标准使用术语 C标准库来引用C99和TC,并明确说明C ++与C的区别。
和部分17.2
C标准库说:
- C ++标准库也提供了它的功能 C标准库,经过适当调整以确保静态类型安全。
- 许多库函数的描述都依赖于C标准 用于这些函数的签名和语义的库。在所有 在这种情况下,任何限制限定词的使用都应予以省略。
醇>
cname 标题文件对应于C标准库 name.h 文件,它们包含在17.6.1.2
标题中其他事情:
除第18条至第30条及附件D所述外,其内容为 每个标题cname应与相应的标题相同 标题name.h,如C标准库(1.2)或C中所指定 Unicode TR,视情况而定,就像包含一样。在C ++标准中 但是,库是声明(除了定义的名称之外) 因为C)中的宏在命名空间的命名空间范围(3.3.6)内 性病。这些名称是否首先在其中声明是未指定的 然后将全局命名空间作用域注入到命名空间std中 显式使用声明(7.3.3)
与climits
相关的limits.h
内容在18.3.3
部分中介绍并说:
内容与标准C库标题相同。 [注意:由宏定义的常量类型是 不需要匹配宏引用的类型.-结束注释]
注意,正如我在上面的注释中提到的那样,规范性引用不作为一个整体,C ++标准必须明确引用它的规范性引用才能应用于C ++标准。有关详细信息,请参阅 Can we apply content not explicitly cited from the normative references to the C++ standard?。