2012-01-21 11 views
1

宿題で、それは次の文は、であると言うので、私はちょうど興味があった:すべてのC++実装にC++標準ライブラリ関数とクラスが含まれていますか?

C++標準ライブラリの関数やクラスは、すべてのC++の実装に含まれていません。

私は標準ライブラリは、あなたが右、(#include)適切なヘッダを追加しない限り、すべてのC++の実装に含まれていると思いませんか?その場合、私は上記の文がではなく、ではないことを覚えていると思います。です。

ステートメントが真であるまたはは、ですか?

+1

あなたは「適切なヘッダを追加する」とはどういう意味ですか?何に追加しますか? –

+0

@ GregHewgill私は#include指令の使用を意味しました。 – trusktr

答えて

5

「include」という言葉の不幸なオーバーロードのように見えます。

C++コンパイラには、標準ライブラリを含むファイルが付属しています。したがって、それらは「含まれる」。しかし、それらは#include -dではないので、標準ライブラリにアクセスするには、ソースファイルに#includeを書き込む必要があります。

さらに、ホストおよびフリーサイズの実装があります。定義された実装の

二種類::ホストされている実装独立実装をここでは標準が言うことです。ホストされた実装では、この国際標準は利用可能なライブラリのセットを定義する。独立した実装とは、オペレーティングシステムの恩恵なしに実行が行われる実装であり、特定の言語サポートライブラリ(17.6.1.3)を含む実装の定義されたライブラリを持っています。声明は言う、「すべての C++の実装」、自立実装は全体のC++標準ライブラリが含まれていませんので

は、ステートメントがTRUEです。

+0

引用符はセクション1.4からです。C++ 11(draft n3290)の実装準拠 '[intro.compliance]'言語はC++ 03(同じセクション)と同じです。 –

+0

+1これは正解です。 –

+0

Hey @BenVoigt、あなたは "ここに標準が言っていることは何ですか?"と言ったところで "Standard"をリンクできますか?ありがとう! – trusktr

1

C++実装がC++標準(ISO/IEC 14882)の準拠の実装であると主張する場合は、コンパイラと標準C++ライブラリの両方の実装を含める必要があります。適合する実装であっても、標準ライブラリは完全である必要はありません。自立実装とホスト実装の違いがあります。前者は非常に基本的なサポートのみが必要ですが、後者は実装全体が提供されることを要求します(私はそれがこのような方法だと思いますが、用語については混乱し続けます。

これは、非常に基本的なライブラリ以上のものを同梱していないさまざまなコンパイラがあり、それらが同梱されている基本ライブラリは、実行する必要があるコンパイラや実行する必要があるランタイムから成ります。しかし、彼らは実装に準拠していると主張していません。ライブラリと組み合わせる必要がありますが、購入できるライブラリがいくつかあります(またはダウンロードしてください。そのうちいくつかは無料ですが、無料のものはいくつかの特定のコンパイラでしか動作しないようです)。

3

この声明は真です(あなたの宿題のインストラクターは間違っています)。標準は17.4.1を区別する。3ホストとフリースタンディングの実装間。ホストされた実装のみがC++標準ライブラリを実装する必要があります。自立型の実装はこれらのヘッダを持つことが必要です。

18.1 Types <cstddef> 
18.2 Implementation properties <limits> 
18.3 Start and termination <cstdlib> 
18.4 Dynamic memory management <new> 
18.5 Type identification <typeinfo> 
18.6 Exception handling <exception> 
18.7 Other runtime support <cstdarg> 
関連する問題