Next: , Up: Header Files


5.6.1 ヘッダの移植性

このセクションでは,一般的なヘッダとそれらの問題に関する知識を正しくして みたいと思います.定義上,以下のリストは常なる追加を必要とします.可能な 限り完全に保つ手助けをお願いします.

inttypes.hstdint.h
Paul Eggertのメモ:ISO C 1999では,inttypes.hstdint.h を インクルードするので,標準的な環境ではstdint.hを個別にインクルー ドする必要な無いことになっています.多くの実装では,inttypes.hは ありますがstdint.hはありませんし(例えば,Solaris 7), stdint.hがあってinttypes.hが無いと言う実装は知りません.ま た,stdint.hをインクルードしているフリーソフトウェアも知りません. stdint.hは,委員会で作成されたようです.
linux/irda.h
それは,linux/types.hsys/socket.hを要求します.
linux/random.h
それは,linux/types.hを要求します.
net/if.h
Darwin上では,このファイルはsys/socket.hがそれ以前にインクルード されていることを要求します.以下のように実行すべきです.
          AC_CHECK_HEADERS([sys/socket.h])
          AC_CHECK_HEADERS([net/if.h], [], [],
          [#include <stdio.h>
          #if STDC_HEADERS
          # include <stdlib.h>
          # include <stddef.h>
          #else
          # if HAVE_STDLIB_H
          #  include <stdlib.h>
          # endif
          #endif
          #if HAVE_SYS_SOCKET_H
          # include <sys/socket.h>
          #endif
          ])

netinet/if_ether.h
Darwin上では,このファイルはstdio.hsys/socket.hがそれ以 前にインクルードされていることを要求します.以下のように実行すべきです.
          AC_CHECK_HEADERS([sys/socket.h])
          AC_CHECK_HEADERS([netinet/if_ether.h], [], [],
          [#include <stdio.h>
          #if STDC_HEADERS
          # include <stdlib.h>
          # include <stddef.h>
          #else
          # if HAVE_STDLIB_H
          #  include <stdlib.h>
          # endif
          #endif
          #if HAVE_SYS_SOCKET_H
          # include <sys/socket.h>
          #endif
          ])

stdint.h
上記のinttypes.hstdint.hを参照して下さい.
stdlib.h
多くのシステム上で(例えばDarwin),stdio.hが必須になります.
sys/mount.h
ia32のFreeBSD 4.8と,gccのバージョン2.95.4を使用しているシステムでは, sys/params.hが必須になります.
sys/socket.h
Darwin上では,stdlib.hが必須になります.
sys/ucred.h
HP Tru64 5.1上では,sys/types.hが必須になります.
X11/extensions/scrnsaver.h
XFree86を使用している場合は,このヘッダはX11/Xlib.hを要求し,おそ らくそれを探すことを考えなくても良いでしょう.
          AC_CHECK_HEADERS([X11/extensions/scrnsaver.h], [], [],
          [[#include <X11/Xlib.h>
          ]])