ANSIライブラリ関数の移植性

C言語の標準ライブラリ関数(ANSIライブラリ関数)は,標準Cをサポートする環境でライブラリ関数宣言および型やマクロの定義としてユーザに提供されている.ANSI C標準ではこれらのライブラリ関数は厳密に定義されていて,C言語の存在する任意のシステム上で互換性を持つ.したがって,標準ライブラリ関数で与えられる機能のみを使っているプログラムは,基本的には変更なしに1つのシステムから他のシステムへ移すことができる.

しかし,標準ライブラリ関数の実装に関するシステム依存部分として,次のような項目がある.

移植性を重視するプログラムでは,これらの実装依存部分に注意してコーディングする必要がある.

標準ライブラリ関数を使ってプログラムを作成する場合に移植上注意すべき事項をまとめる.

実装依存項目

ライブラリ関数

移植上の問題があるライブラリ関数について,各ライブラリ関数ごとに以下の情報を記載する.

地域情報

シグナル処理

可変引数

ファイル操作

ファイルアクセス関数

書式付き入出力関数

ファイル位置関数

疑似乱数生成関数

メモリ管理関数

環境との通信

整数型算術関数

文字処理関数

数学関数

数学関数の実行時のエラーに関して,以下の項目は実装依存である.

複数バイト文字処理

char型では表わせられない文字セットを使用する場合,char型の代わりにwchar_t型を用いる必要がある.

複数バイト文字の変換を行なう以下の関数がある.

使用上の注意点

標準ライブラリ関数の移植性向上の観点からの使用上の注意点を示す. また,移植上の問題を持つ関数以外に,不定な動作や未定義な動作を持つ関数をまとめて示す.

ANSI非準拠ライブラリ関数

処理系によっては,ANSI標準ライブラリ関数と機能は等価であるが,関数名やパラメータの並びの異なる関数を持つものがある.これらの関数を使用しているプログラムは,マクロ置換により対応するANSI標準ライブラリ関数に置き換えることによってANSI準拠の処理系に移植することができる.逆に,ANSI準拠の処理系から非準拠の処理系への移植の場合も同様である.

inserted by FC2 system