これらのマクロは,“特定の”テストマクロでカバーされていない宣言を調査す るために使用します.
symbol(関数や変数)がincludesで定義されていなくて宣言が必要な 場合,シェルコマンドaction-if-not-foundを実行し,それ以外では action-if-foundを実行します.includesが宣言されていない場合, デフォルトのインクルードが使用されます(see Default Includes).
このマクロは,必要でないときに余分な宣言を導入することを避けた方が安全な ので,symbolがr-valueとして有効かどうかを実際にテストし,実際に宣 言されているかどうかはテストしません.
それぞれの(カンマで分けられているリスト)symbolsに対し, symbolが宣言されれいる場合は
HAVE_DECL_
symbolを(全て大 文字で)‘1’に定義し,それ以外では‘0’に定義します. action-if-not-foundが与えられている場合,関数宣言の一つが必要なと き実行するシェルコードを追加し,それ以外ではaction-if-foundが実行 されます.このマクロは,最初の引数としてM4のリストを使用します.
AC_CHECK_DECLS(strdup) AC_CHECK_DECLS([strlen]) AC_CHECK_DECLS([malloc, realloc, calloc, free])他の‘AC_CHECK_*S’マクロと異なり,symbolが宣言されていないとき,
HAVE_DECL_
symbolを宣言しないままにする代わりに,HAVE_DECL_
symbolは‘0’で定義されます.調査の実行を 確かめているときは,HAVE_DECL_
symbolをAutoconfの他の 結果と同じように,以下のように使用してください.#if !HAVE_DECL_SYMBOL extern char *symbol; #endifしかし,テストが実行されていない場合,システムのものと衝突するような宣言 を使用するより,シンボルを宣言しない方が安全なので,以下のように 使用すべきでしょう.
#if defined HAVE_DECL_MALLOC && !HAVE_DECL_MALLOC void *malloc (size_t *s); #endif究極の状態でのみ二番目のカテゴリに分類されます.ファイルがコンフィグレー ションされずに使用されている場合か,コンフィグレーション時に使用されてい る場合のいずれかです.ほとんどの場合はこれまでの方法で十分です.