私は、関数のプロトタイプがそれぞれのヘッダーファイルにあることを理解します。標準関数の宣言は標準ライブラリにあり、そのために "using namespace std"という用語を使用しています。しかし、非標準関数の宣言はどこに格納されていますか?非標準関数の宣言はどこにありますか?
答えて
標準ライブラリをヘッダファイルとして実装する必要はありません。
C++標準では、#include <vector>
を実行すると何が起こるかを示しています。システム上のヘッダファイルにはvector
は必要ありません。特定のシンボルや型を導入するコンパイラ組み込み関数として実装できます。
これらの記号や種類とやり取りするときに何が起こるかが決まります。
これは通常、ヘッダーファイルとして簡単に実行できます。 std
にはC++で実装できないC++機能がいくつかあります。通常、「サーフェス」インタラクションはC++で行われますが、マジックコンパイラの組み込み関数には戻されます。
std
の多くは存在し、純粋なヘッダーファイルとして存在します。その他の部分は通常、ほとんどの場合CまたはC++で書かれたライブラリにコンパイルされます。それらはオペレーティングシステムライブラリと相互作用します。オペレーティングシステムライブラリはC言語(と時にはC++やその他の言語)で書かれていますが、C言語とアセンブリ言語の組み合わせで記述されたハードウェア固有のコードと対話します。
"ランタイム"ライブラリは、動的にまたは静的に出力にリンクすることができ、C++に必要なものと特定のOSが提供するものとの間の一種の「接着剤」として機能します。
他のライブラリが存在する可能性があります。ヘッダファイルは、コンパイラによって決められた方法で格納され、コンパイラによって決められた方法で検索されます。これらのライブラリが動的にまたは静的にリンクされるのは、前記ライブラリが存在する場合と同様に、コンパイラによって決定される方法でも行われる。
これらは、コンパイラが期待するABIと一致するインターフェイスをエクスポートする限り、多くの言語で記述できます。
あなたはより簡単な言葉で説明できますか?私はあなたの答えを完全に得ていませんでした。ありがとう。 –
@TanmayBhatnagar C++がどのように実行可能ファイルやライブラリにコンパイルされるのですか? – Yakk
私は、コードをコンパイルすると、リンクはヘッダーファイル内のすべてのプロトタイプをそれぞれの関数宣言にリンクすることを理解します。その後、コンパイラはソースコードをオブジェクトコードに変換します。 –
- 1. C++ 11の標準ライブラリには前方宣言ヘッダーがありますか?
- 2. このenum宣言は標準に準拠していますか?
- 3. クロス言語コードの標準実施ツールはどこにありますか?
- 4. F#ライブラリには、 `argMax`の標準関数がありますか?
- 5. 次のC標準のアイデアはどこにありますか?
- 6. Elixirには標準的なcurry()関数がありますか?
- 7. 標準のAndroidアイコンリソースはどこにありますか?
- 8. Pythonの標準ライブラリコードはどこにありますか?
- 9. 標準ライブラリWPFコントロールのギャラリーはどこにありますか?
- 10. Windows GUIの標準はどこにありますか?
- 11. C++標準ライブラリのヘッダはどこにありますか
- 12. ISOのC標準ライブラリの関数strcmpiはありますか?
- 13. 標準のreverseLookup関数はありますか?
- 14. 標準の静的関数ラッパー型テンプレートはありますか?
- 15. ビットストリーム用の標準C関数はありますか?
- 16. Windows Phone 7 GUI標準はどこにありますか?
- 17. CPU_ALLOCの宣言はどこにありますか?
- 18. Pythonの標準ライブラリにループ関数に似た関数がありますか?
- 19. OCaml標準ライブラリに `flip`関数がありますか?
- 20. ヘッダーに関数の暗黙の宣言がありますか?
- 21. `stdin`マクロ宣言はどこにありますか?
- 22. この関数をどのように宣言しますか?
- 23. ifstreamとofstreamの非標準のC++ヘッダーはありますか?
- 24. どのような標識関数宣言の目的は、
- 25. ISO標準命名の標準はありますか?
- 26. 変数の宣言と宣言の間に違いはありますか?
- 27. IIFEで宣言された変数はどこにありますか?
- 28. C++言語の標準BNFまたはYACC文法はどこにありますか?
- 29. 標準のボタンサイズはありますか?
- 30. 注釈@StringDef、@IntDef宣言標準をサポートしていますか?
このように、「using namespace std」_という用語を使用しています。一般的に、私たちはしません(http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice)。 –
実装者はどこにでも存在することを望みます。これは 'std'名前空間以外の場所です。通常、グローバル名前空間にあります。 –
経験豊富なC++開発者は、 "using namespace std;"を使用することはありません。これは、不明瞭なバグにつながります。 C++以外のライブラリ関数が実行される限り、それらは名前のないグローバル名前空間で宣言されます。 –