準拠 C++98/03/0x 実装のすべての関数は完全に C99 準拠ですか?
C++0x はいくつかの C99 ( language ) 機能を追加したと思っていましたが、C ライブラリ関数について決定的なことを聞いたり読んだりしたことはありません。
混乱を避けるために、ここでは<c*>
ヘッダー セットで宣言された関数を使用する C++ プログラムについて説明します。
ありがとう。
準拠 C++98/03/0x 実装のすべての関数は完全に C99 準拠ですか?
C++0x はいくつかの C99 ( language ) 機能を追加したと思っていましたが、C ライブラリ関数について決定的なことを聞いたり読んだりしたことはありません。
混乱を避けるために、ここでは<c*>
ヘッダー セットで宣言された関数を使用する C++ プログラムについて説明します。
ありがとう。
C99 標準ライブラリのほとんどは C++0X にインポートされていますが、すべてではありません。メモリから、インポートされなかったものには
<ctgmath>
と、<ccomplex>
_<cmath>
<ccomplex>
含まれているかのように動作します<complex>
<cmath>
かなりの数の調整があります (オーバーロードとテンプレート関数を提供し、C99 が提供するものを完成させます)<cstdbool>
、<iso646.h>
、 ...) は、言語間の違いを考慮して調整されています ( bool
C++ ではプリミティブであり、<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 の一部ではありませんでした)。
いいえ。C++03 は、C99 ではなく、ANSI C89/ISO C90 に準拠しています。
今後の C++0x 標準は、C99 とある程度一致すると予想されます。、などをリストする現在のドラフトの段落 17.6.1.2 を参照してください。AProgrammer が言及しているように、一部のヘッダーはまったく同じではないことに注意してください。さらに、ヘッダーはC99 ではなくC Technical Report 19769に準拠しています。ccomplex
cinttypes
cstdint
cuchar