2

準拠 C++98/03/0x 実装のすべての関数は完全に C99 準拠ですか?

C++0x はいくつかの C99 ( language ) 機能を追加したと思っていましたが、C ライブラリ関数について決定的なことを聞​​いたり読んだりしたことはありません。

混乱を避けるために、ここでは<c*>ヘッダー セットで宣言された関数を使用する C++ プログラムについて説明します。

ありがとう。

4

2 に答える 2

7

C99 標準ライブラリのほとんどは C++0X にインポートされていますが、すべてではありません。メモリから、インポートされなかったものには

  • <ctgmath>と、<ccomplex>_<cmath>
  • <ccomplex>含まれているかのように動作します<complex>
  • <cmath>かなりの数の調整があります (オーバーロードとテンプレート関数を提供し、C99 が提供するものを完成させます)
  • 他の一部のヘッダー ( <cstdbool><iso646.h>、 ...) は、言語間の違いを考慮して調整されています ( boolC++ ではプリミティブであり、<stdbool.h>たとえば C で提供されるマクロです) が、数学部分の範囲については何もありません。

C99 バージョンのように動作しない形式のヘッダーは、グローバル名前空間でコンテンツを宣言するだけ<xxx.h>であり、C99 コンテンツに近いものではありません。<cxx><cxxx><xxx.h>

<cstdalign>関連すること: C++0X は、C99で定義されていない cxxx と xxx.h の両方の形式でいくつかのヘッダーを提供します ( <cuchar>2 つ目は C TR で定義されています)。

(C99 の一連の数学関数が TR1 に入れられたが、C++0X には保持されていなかったことを思い出しました。私は間違っていました。その数学関数の束はそもそも C99 の一部ではありませんでした)。

于 2011-02-27T15:44:15.920 に答える
4

いいえ。C++03 は、C99 ではなく、ANSI C89/ISO C90 に準拠しています。

今後の C++0x 標準は、C99 とある程度一致すると予想されます。、などをリストする現在のドラフトの段落 17.6.1.2 を参照してください。AProgrammer が言及しているように、一部のヘッダーはまったく同じではないことに注意してください。さらに、ヘッダーはC99 ではなくC Technical Report 19769に準拠しています。ccomplexcinttypescstdintcuchar

于 2011-02-27T15:41:29.863 に答える