Next: , Up: Configuration Headers


4.8.1 コンフィグレーションヘッダのテンプレート

最終的なヘッダファイルが見つかるように,コメントとフックとして使用される #undef宣言を含んでいるテンプレートファイルを,配布物に含めるべき です.例えば,configure.acで以下のように呼び出します.

     AC_CONFIG_HEADERS([conf.h])
     AC_CHECK_HEADERS([unistd.h])

conf.h.inで以下のようなコードを書きます.unistd.hがあるシ ステムでは,configureは‘#define’ ‘HAVE_UNISTD_H’ を1 にします.それ以外のシステムでは,行全体がコメントアウトされます(そのシ ステムの場合,シンボルは前もって定義されません).

     /* Define as 1 if you have unistd.h.  */
     #undef HAVE_UNISTD_H

#undef’が最初の列にあり,‘HAVE_UNISTD_H’の後に空白すらないこ とに注意してください.その後で,プリプロセッサ命令を使用しているコンフィ グレーションヘッダをデコードすることが可能です.

     #include <conf.h>
     
     #if HAVE_UNISTD_H
     # include <unistd.h>
     #else
     /* We are in trouble.  */
     #endif

#undef’の代わりに‘#define’を用いている,古い形式のテンプレー トの使用は,強く反対します.‘#undef’と同じ行にコメントがある古いテ ンプレートも同様です.とにかく,プロセッサマクロにコメントを書くのは,決 してよい考えではありません.

テンプレートヘッダを更新し続けることは退屈な作業なので,それを生成するた めにautoheaderしてもかまいません.autoheader Invocation を参照してください.