environment)はC言語およびC++の実行環境の一種である。概要[編集]フリースタンディング環境は、OSなしでプログラムを実行しなければいけない環境を指すCおよびC++の用語である。これはCの規格書[1]およびC++の規格書[2]に記載されている。OSなしで実行するプログラムとは組み込み用のプログラムであったりOSそのものである。ホスト環境は逆にOSが存在することを想定しており一般的なアプリケーションソフトウェアやミドルウェアを指す。フリースタンディング環境用としてつくられたプログラムはOSなしで動作する必要はない。OS上で動くフリースタンディング環境のプログラムとしてはデモシーン用のプログラムが代表的である。実行環境を指定しない場合は、ホスト環境を対象にしていることがある。組み込みシステムではフリースタンディング環境を対象にすることもある。μITRONはオペレーティングシステムの一種であるが、フリースタンディング環境を選択しているシステムとして提供していることがある。TOPPERSプロジェクトのTRON系、OSEK系などで、模擬環境でないものは、フリースタンディング環境での利用を想定してソースコードを提供している。ホスト環境との違い[編集]フリースタンディング環境はOSから提供される機能が無いこと、プログラムを書き込む記憶領域が狭いことを想定し標準Cライブラリとしてホスト環境で要求する関数はCでは一切、C++では言語機能を実装するに最低限しか要求しない。Cにおいては定義を書いたヘッダーファイルのみを要求する(詳細は制限参照)。このため、Cにおいてはホスト環境で必要とされるランタイムライブラリを必要としない。ホスト環境におけるmain関数は、プログラムを呼び出した親プログラム(OS等)の存在を想定しておりフリースタンディング環境のエントリーポイントとしては過剰である。mainという名前が、main関数を呼び出すスタートアップコードを用意する上で邪魔になる(main関数を呼び出す関数がmainでは他にmainを定義できない)ため、エントリーポイントはmain関数とは名前も形式も異る関数にできるようになっている。制限[編集]フリースタンディング環境では言語仕様に以下の制限を受ける。エントリーポイントはmain関数である必要はなく、関数の型および名称は処理系定義となる。_start(void)。標準Cライブラリの大部分がサポートされない。フリースタンディング環境でもサポートされる標準ライブラリを以下に挙げる。組み合わせで動作する。用フリースタンディング環境でも使える。}標準Cライブラリなし[編集]類似概念として、コンパイラによっては標準Cライブラリなしでコンパイルすることも可能。オプションを指定することにより、標準Cライブラリを使わなくなる。種別依存のアセンブラで書かないといけない。システムコールがスタックを準備するため、スタックは正しく準備された状態でエントリーポイントが呼び出される。組み合わせで動作する。}脚注[編集]ウィキブックスにC言語関連の解説書・教科書があります。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。