符合 C++98/03/0x 实现的所有函数是否完全符合 C99?
我认为 C++0x 添加了一些 C99(语言)特性,但从未听说或读过任何关于 C 库函数的明确信息。
为避免混淆,我说的是使用<c*>
头集中声明的函数的 C++ 程序。
谢谢。
符合 C++98/03/0x 实现的所有函数是否完全符合 C99?
我认为 C++0x 添加了一些 C99(语言)特性,但从未听说或读过任何关于 C 库函数的明确信息。
为避免混淆,我说的是使用<c*>
头集中声明的函数的 C++ 程序。
谢谢。
大多数 C99 标准库已在 C++0X 中导入,但不是全部。从记忆中,在没有导入的东西中有
<ctgmath>
简单地包括<ccomplex>
and <cmath>
,<ccomplex>
表现得好像它包括<complex>
<cmath>
有相当多的调整(提供完成C99提供的重载和模板功能之一)<cstdbool>
, <iso646.h>
, ...)进行了调整以考虑语言之间的差异(bool
在 C++ 中是原始的,<stdbool.h>
例如在 C 中提供的宏),但与数学部分的范围无关。<xxx.h>
其<cxx>
形式与 C99 版本不同的标头只是<cxxx>
在全局命名空间中声明了内容,它们并不接近 C99<xxx.h>
内容。
相关的事情:C++0X 提供了一些 cxxx 和 xxx.h 形式的头文件,这些头文件在 C99 中没有定义(<cstdalign>
并且<cuchar>
,第二个是在 C TR 中定义的)
(我记得 C99 中的一堆数学函数已经放在 TR1 中,但没有保存在 C++0X 中,我错了,那一堆数学函数首先不是 C99 的一部分)。
不,C++03 与 ANSI C89/ISO C90 对齐,而不是 C99。
即将到来的 C++0x 标准有望在某种程度上与 C99 保持一致。请参阅当前草案中的第 17.6.1.2 段,其中列出了ccomplex
、等。请注意,正如 AProgrammer 所提到的,一些标题并不完全相同;此外,标题与C 技术报告 19769而非 C99 对齐。cinttypes
cstdint
cuchar