フリースタンディング環境というのは、C++でいう自立処理系の環境のことです。C++の場合と同様、オペレーティングシステムの支援無しに動作する環境であり、一部のヘッダを除き、標準ライブラリは一切サポートされません。また、プログラムの開始はmainからとは限らず、処理系定義の名前と型を持つ関数から始まります。

サポートされるヘッダ

フリースタンディング環境でサポートされるヘッダには次のものがあります。

  • <float.h>
  • <limits.h>
  • <stdarg.h>
  • <stddef.h>

上記に加え、C95では<iso646.h>ヘッダもサポートされます。さらに、C99では<stdbool.h>および<stdint.h>ヘッダがサポートされます。自立処理系のC++では、<limits>ヘッダがサポートされる代わりに<climits>や<cfloat>ヘッダはサポートされませんでした。このあたりが微妙に異なりますので要注意です。

終了処理

C++では、自立処理系であっても、abort, atexit, exitの3つの関数がサポートされました。しかし、C言語ではこれらの関数はサポートされません。C言語には例外処理もありませんので、プログラムを終了するには、mainまたはそれに代わる関数から呼び出し元に戻るか、処理系定義の方法に依存することになります。


↑ C++98プログラマーのためのC89入門