2

符合 C++98/03/0x 实现的所有函数是否完全符合 C99?

我认为 C++0x 添加了一些 C99(语言)特性,但从未听说或读过任何关于 C 库函数的明确信息。

为避免混淆,我说的是使用<c*>头集中声明的函数的 C++ 程序。

谢谢。

4

2 回答 2

7

大多数 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 的一部分)。

于 2011-02-27T15:44:15.920 回答
4

不,C++03 与 ANSI C89/ISO C90 对齐,而不是 C99。

即将到来的 C++0x 标准有望在某种程度上与 C99 保持一致。请参阅当前草案中的第 17.6.1.2 段,其中列出了ccomplex、等。请注意,正如 AProgrammer 所提到的,一些标题并不完全相同;此外,标题与C 技术报告 19769而非 C99 对齐。cinttypescstdintcuchar

于 2011-02-27T15:41:29.863 回答