フリースタンディング処理系とホスト処理系
提供: cppreference.com
< cpp
ホスト処理系とフリースタンディング処理系の2種類の処理系が C++ 標準によって定義されています。 ホスト処理系に対して C++ 標準が要求する標準ライブラリヘッダの集合はフリースタンディング処理系に対するものよりも大きなものです。 フリースタンディング処理系では実行はオペレーティングシステムなしで行われる場合もあります。
マルチスレッド実行およびデータ競合に対する要件
|
(C++11以上) |
[編集] main 関数に対する要件
| フリースタンディング | ホスト |
|---|---|
| フリースタンディング処理系では、プログラムが main 関数を定義しなければならないかどうかは処理系定義です。 スタートアップおよび終了は処理系定義です。 スタートアップには静的記憶域期間を持つ名前空間スコープのオブジェクトに対するコンストラクタの実行が含まれます。 終了には静的記憶域期間を持つオブジェクトに対するデストラクタの実行が含まれます。 | ホスト処理系では、プログラムは main という名前のグローバル関数を含まなければなりません。 プログラムを実行すると main 関数を呼び出すメインスレッドを開始します。 メインスレッドでは静的記憶域期間を持つ変数の初期化と破棄も行われます。
|
[編集] 標準ライブラリヘッダに対する要件
フリースタンディング処理系は処理系定義のヘッダの集合を持ちますが、この集合には少なくとも以下の表のヘッダが含まれます。
| 型 | <cstddef> |
| 処理系の性質 | <limits> <cfloat> <climits> (C++11以上) <version> (C++20以上) |
| 整数型 | <cstdint> (C++11以上) |
| 開始と終了 | <cstdlib> (一部)[1] |
| 動的メモリ管理 | <new> |
| 型識別 | <typeinfo> |
| ソース位置 | <source_location> (C++20以上) |
| 例外処理 | <exception> |
| 初期化子リスト | <initializer_list> (C++11以上) |
| 比較 | <compare> (C++20以上) |
| コルーチンサポート | <coroutine> (C++20以上) |
| その他の実行時サポート | <cstdarg> |
| 基礎ライブラリコンセプト | <concepts> (C++20以上) |
| 型特性 | <type_traits> (C++11以上) |
| ビット操作 | <bit> (C++20以上) |
| アトミック | <atomic> (C++11以上)[2] |
| <ciso646> (C++11以上)(C++20未満) | |
| 非推奨のヘッダ | <cstdalign> <cstdbool> (C++11以上)(C++20未満) |
- ↑ ヘッダ
<cstdlib>の供給されるバージョンは少なくとも関数 std::abort、 std::atexit、 std::exit、 std::at_quick_exit および std::quick_exit (C++11以上) を宣言しなければなりません。 - ↑ フリースタンディング処理系では常にロックフリーな整数アトミック型のサポートおよび型エイリアス std::atomic_signed_lock_free および std::atomic_unsigned_lock_free の存在は処理系定義です。 (C++20以上)
[編集] 参考文献
- C++20 standard (ISO/IEC 14882:2020):
- 4.1 Implementation compliance [intro.compliance](p: 7)
- 6.9.2 Multi-threaded executions and data races [intro.multithread](p: 77)
- 6.9.3.1 main function [basic.start.main](p: 82)
- 16.5.1.3 Freestanding implementations [compliance](p: 470)
- C++17 standard (ISO/IEC 14882:2017):
- 4.1 Implementation compliance [intro.compliance](p: 5)
- 4.7 Multi-threaded executions and data races [intro.multithread](p: 15)
- 6.6.1 main function [basic.start.main](p: 66)
- 20.5.1.3 Freestanding implementations [compliance](p: 458)
- C++14 standard (ISO/IEC 14882:2014):
- 1.4 Implementation compliance [intro.compliance](p: 5)
- 1.10 Multi-threaded executions and data races [intro.multithread](p: 11)
- 3.6.1 Main function [basic.start.main](p: 62)
- 17.6.1.3 Freestanding implementations [compliance](p: 441)
- C++11 standard (ISO/IEC 14882:2011):
- 1.4 Implementation compliance [intro.compliance](p: 5)
- 1.10 Multi-threaded executions and data races [intro.multithread](p: 11)
- 3.6.1 Main function [basic.start.main](p: 58)
- 17.6.1.3 Freestanding implementations [compliance](p: 408)
- C++03 standard (ISO/IEC 14882:2003):
- 1.4 Implementation compliance [intro.compliance](p: 3)
- 3.6.1 Main function [basic.start.main](p: 43)
- 17.4.1.3 Freestanding implementations [lib.compliance](p: 326)
[編集] 関連項目
| 準拠 の C言語リファレンス
|