前: autoheader Invocation, 上: Configuration Headers


4.8.3 autoheaderのマクロ

autoheaderconfigure.acを調査し,定義されているCプリプ ロセッサシンボルを判定します.それは,AC_CHECK_HEADERSAC_CHECK_FUNCS等が定義しているシンボルに対するテンプレートを生成 する方法は知っていますが,あらゆる追加のシンボルをAC_DEFINEしてい る場合,それに対するテンプレートを定義する必要があります.テンプレートが 無い場合,autoheaderはエラーメッセージとともに失敗します.

symbolに対するテンプレートを作成する最も簡単な方法は, `AC_DEFINE(symbol)'の引数にdescriptionを与えることです. Defining Symbolsを参照してください.以下のマクロの一つを使用するこ とも可能です.

— マクロ: AH_VERBATIM (key, template)

autoheaderに,templateをそのままヘッダテンプレートファイ ルに含めるよう伝えます.このtemplatekeyに関連付けされてい て,それは全ての異なるテンプレートを並べ替えし,それらのユニーク性を保証 するために使用されます.それは,AC_DEFINEされることが可能なシンボ ルにすべきです.

例えば以下のようにします.

          AH_VERBATIM([_GNU_SOURCE],
          [/* Enable GNU extensions on systems that have them.  */
          #ifndef _GNU_SOURCE
          # define _GNU_SOURCE
          #endif])
     
— マクロ: AH_TEMPLATE (key, description)

autoheaderに,keyに対するテンプレートを生成するように伝 えます.このマクロは,descriptionが与えられたときの AC_DEFINEのような,標準的なテンプレートを生成します.

例えば,以下のようにします.

          AH_TEMPLATE([CRAY_STACKSEG_END],
                      [Define to one of _getb67, GETB67, getb67
                       for Cray-2 and Cray-YMP systems.  This
                       function is required for alloca.c support
                       on those systems.])
     

これは,適切に正当化された記述を用いて,以下のテンプレートを生成します.

          /* Define to one of _getb67, GETB67, getb67 for Cray-2 and
             Cray-YMP systems.  This function is required for alloca.c
             support on those systems.  */
          #undef CRAY_STACKSEG_END
     
— マクロ: AH_TOP (text)

textをヘッダテンプレートファイルの最初に含めます.

— マクロ: AH_BOTTOM (text)

textをヘッダテンプレートファイルの最後に含めます.