Next: , Previous: Header Portability, Up: Header Files   [Contents][Index]


5.6.2 ÆÃÄê¤Î¥Ø¥Ã¥À¤ÎÄ´ºº

¤³¤ì¤é¤Î¥Þ¥¯¥í¤Ï¡¤ÆÃÄê¤Î¥·¥¹¥Æ¥à¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÄ´ºº¤·¤Þ¤¹ — ¤½¤ì¤é¤¬ ¸ºß¤·¤Æ¤¤¤ë¤«¡¤¤½¤·¤Æ¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¡¤ÆÃÄê¤Î¥·¥ó¥Ü¥ë¤òÀë¸À¤·¤Æ¤¤¤ë¤«¤òÄ´ ºº¤·¤Þ¤¹¡¥

Macro: AC_HEADER_DIRENT

°Ê²¼¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÄ´ºº¤·¤Þ¤¹¡¥ºÇ½é¤Ë¸«¤Ä¤«¤Ã¤¿‘DIR’¤òÄêµÁ¤·¤Æ¤¤ ¤ë¤â¤Î¤ËÂФ·¤Æ¡¤¥ê¥¹¥È¥¢¥Ã¥×¤µ¤ì¤Æ¤¤¤ëC¥×¥ê¥×¥í¥»¥Ã¥µ¥Þ¥¯¥í¤òÄêµÁ¤·¤Þ¤¹¡¥

dirent.hHAVE_DIRENT_H
sys/ndir.hHAVE_SYS_NDIR_H
sys/dir.hHAVE_SYS_DIR_H
ndir.hHAVE_NDIR_H

¥½¡¼¥¹¥³¡¼¥ÉÆâ¤Î¥Ç¥£¥ì¥¯¥È¥ê¥é¥¤¥Ö¥é¥ê¤ÎÀë¸À¤Ï¡¤°Ê²¼¤Î¤è¤¦¤Ë¤¹¤Ù¤­¤Ç¤·¤ç ¤¦¡¥

#if HAVE_DIRENT_H
# include <dirent.h>
# define NAMLEN(dirent) strlen((dirent)->d_name)
#else
# define dirent direct
# define NAMLEN(dirent) (dirent)->d_namlen
# if HAVE_SYS_NDIR_H
#  include <sys/ndir.h>
# endif
# if HAVE_SYS_DIR_H
#  include <sys/dir.h>
# endif
# if HAVE_NDIR_H
#  include <ndir.h>
# endif
#endif

¾åµ­¤ÎÀë¸À¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¤¥×¥í¥°¥é¥à¤Ï·¿¤òstruct direct¤Ç¤Ï¤Ê ¤¯struct dirent¤È¤·¤ÆÊÑ¿ô¤òÀë¸À¤·¡¤struct dirent¤Ø¤Î¥Ý¥¤¥ó ¥¿¤òÅϤ¹¤³¤È¤Ë¤è¤Ã¤Æ¡¤NAMLEN¥Þ¥¯¥í¤Þ¤Ç¤Î¥Ç¥£¥ì¥¯¥È¥ê¥¨¥ó¥È¥ê̾¤Î Ťµ¤Ë¥¢¥¯¥»¥¹¤·¤Þ¤¹¡¥

¤³¤Î¥Þ¥¯¥í¤Ï¡¤SCO Xenix dir¤Èx¥é¥¤¥Ö¥é¥ê¤âÄ´ºº¤·¤Þ¤¹¡¥

Macro: AC_HEADER_MAJOR

sys/types.h¤¬major¡¤minor¡¤¤½¤·¤Æmakedev¤òÄê µÁ¤·¤Æ¤¤¤Ê¤¤¤¬¡¤sys/mkdev.h¤¬ÄêµÁ¤·¤Æ¤¤¤ë¾ì¹ç¡¤ MAJOR_IN_MKDEV¤òÄêµÁ¤·¤Þ¤¹¡¥¤½¤ì°Ê³°¤Î¾ì¹ç¤Ç¡¤ sys/sysmacros.h¤¬ÄêµÁ¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¤MAJOR_IN_SYSMACROS ¤ò ÄêµÁ¤·¤Þ¤¹¡¥

Macro: AC_HEADER_STAT

sys/stat.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëS_ISDIR¡¤S_ISREGÅù¤Î¥Þ¥¯ ¥í¤¬Àµ³Î¤Ëưºî¤·¤Ê¤¤(´Ö°ã¤Ã¤¿Àµ¤ÎÃͤòÊÖ¤¹)¾ì¹ç¡¤ STAT_MACROS_BROKEN ¤òÄêµÁ¤·¤Þ¤¹¡¥Tektronix UTekV¡¤Amdahl UTS¡¤¤½ ¤·¤ÆMotorola System V/88¤Î¾ì¹ç¤¬¤½¤¦¤Ç¤¹¡¥

Macro: AC_HEADER_STDBOOL

stdbool.h¤¬Â¸ºß¤·¡¤¤½¤ì¤¬C99¤Ë½àµò¤·¤Æ¤¤¤ë¾ì¹ç¡¤ HAVE_STDBOOL_H¤ò1¤ËÄêµÁ¤·¤Þ¤¹¡¥·¿_Bool¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¤ HAVE__BOOL¤ò1¤ËÄêµÁ¤·¤Þ¤¹¡¥C99¤ÎÍ×µá¤òËþ¤¿¤¹¤¿¤á¡¤system.h ¤Ë¤Ï°Ê²¼¤Î¥³¡¼¥É¤ò´Þ¤á¤ë¤Ù¤­¤Ç¤¹¡¥

#if HAVE_STDBOOL_H
# include <stdbool.h>
#else
# if ! HAVE__BOOL
#  ifdef __cplusplus
typedef bool _Bool;
#  else
typedef unsigned char _Bool;
#  endif
# endif
# define bool _Bool
# define false 0
# define true 1
# define __bool_true_false_are_defined 1
#endif
Macro: AC_HEADER_STDC

¥·¥¹¥Æ¥à¤ËANSI C¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë¾ì¹ç¡¤ STDC_HEADERS¤òÄêµÁ¤·¤Þ¤¹¡¥ÆÃ¤Ë¤³¤Î¥Þ¥¯¥í¤Ï¡¤stdlib.h¡¤ stdarg.h¡¤string.h¡¤¤½¤·¤Æfloat.h¤òÄ´ºº¤·¡¤¥·¥¹¥Æ¥à ¤Ë¤½¤ì¤é¤¬Â¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¤¤ª¤½¤é¤¯ANSI C¥Ø¥Ã¥À¡¼¥Õ¥¡¥¤¥ë¤Î »Ä¤ê¤â¸ºß¤·¤Þ¤¹¡¥Æ±Íͤˡ¤¤³¤Î¥Þ¥¯¥í¤Ïstring.h¤¬memchr¤òÀë ¸À(¾¤Îmem´Ø¿ô¤â¤ª¤½¤é¤¯Â¸ºß)¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¡¤stdlib.h¤¬ free¤òÀë¸À(malloc¤ä¾¤Î´ØÏ¢¤¹¤ë´Ø¿ô¤â¤ª¤½¤é¤¯Â¸ºß)¤·¤Æ¤¤¤ë ¤«¤É¤¦¤«¡¤¤½¤·¤Æ¡¤ctype.h¥Þ¥¯¥í¤¬¡¤ANSI C¤¬Í׵᤹¤ë¥Ï¥¤ ¥Ó¥Ã¥È¥»¥Ã¥Èʸ»ú¤Ç¤âưºî¤¹¤ë¤«¤É¤¦¤«¤òÄ´ºº¤·¤Þ¤¹¡¥

GCC¤¬¤¢¤ë¥·¥¹¥Æ¥à¤Î¿¤¯¤ÏANSI C¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤¤ ¤Î¤Ç¡¤¥·¥¹¥Æ¥à¤ËANSIÂбþ¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë(¤½¤·¤Æ¡¤¤ª¤½¤é¤¯C ¥é ¥¤¥Ö¥é¥ê´Ø¿ô) ¤¬Â¸ºß¤·¤Æ¤¤¤ë¤³¤È¤ò·èÄꤹ¤ë¤¿¤á¤Ë¡¤__STDC__¤ÎÂå¤ï ¤ê¤ËSTDC_HEADERS¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥

ANSI C¥Ø¥Ã¥À¤¬Ìµ¤¤¥·¥¹¥Æ¥à¤Ë¤Ï¿¤¯¤ÎÊѼ郎¸ºß¤·¤Æ¤¤¤Æ¡¤¤½¤³¤Ç ¤Ï¡¤¥·¥¹¥Æ¥à¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬Àë¸À¤·¤Æ¤¤¤ë¤â¤Î¤òÀµ³Î¤ËÍý²ò¤¹¤ë¤è¤ê¡¤»ÈÍѤ¹ ¤ë´Ø¿ô¤òÀë¸À¤¹¤ëÊý¤¬¤è¤êÍÆ°×¤Ç¤·¤ç¤¦¡¥ANSI¤ÈBSD¤Î´Ø ¿ô¤¬º®ºß¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤â¤¢¤ê¤Þ¤¹¡¥¤Û¤È¤ó¤ÉANSI¤À¤¬ ‘memmove’¤¬Ìµ¤¤¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥BSD´Ø¿ô¤¬string.h¤ä strings.h ¤Ç¥Þ¥¯¥í¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥BSD´Ø ¿ô¤·¤«»ý¤Ã¤Æ¤¤¤Ê¤¤¤¬ string.h¤¬Â¸ºß¤¹¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥¥á¥â¥ê´Ø¿ô ¤¬memory.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Æ¡¤string.h¤Ç¤âÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤â¤Î ¤â¤¢¤ê¤Þ¤¹¡¥Åù¡¹¤¤¤í¤¤¤í¤Ê¥·¥¹¥Æ¥à¤¬¤¢¤ê¤Þ¤¹¡¥°ì¤Ä¤Îʸ»úÎó´Ø¿ô¤È°ì¤Ä¤Î¥á ¥â¥ê´Ø¿ô¤òÄ´ºº¤¹¤ì¤Ð¶²¤é¤¯½½Ê¬¤Ç¤¹¡¥¥é¥¤¥Ö¥é¥ê¤ËANSI¥Ð¡¼¥¸¥ç¥ó ¤Î¤â¤Î¤¬Â¸ºß¤¹¤ë¾ì¹ç¡¤Â¾¤Î¤â¤Î¤â¤Û¤È¤ó¤É¸ºß¤·¤Þ¤¹¡¥°Ê²¼¤ò configure.ac¤Ë½ñ¤­¹þ¤à¾ì¹ç¤ò¹Í¤¨¤Þ¤¹¡¥

AC_HEADER_STDC
AC_CHECK_FUNCS(strchr memcpy)

¥³¡¼¥ÉÆâ¤Ë¡¤°Ê²¼¤Î¤è¤¦¤ÊÀë¸À¤ò»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥

#if STDC_HEADERS
# include <string.h>
#else
# if !HAVE_STRCHR
#  define strchr index
#  define strrchr rindex
# endif
char *strchr (), *strrchr ();
# if !HAVE_MEMCPY
#  define memcpy(d, s, n) bcopy ((s), (d), (n))
#  define memmove(d, s, n) bcopy ((s), (d), (n))
# endif
#endif

BSD¤È¤Ï°Û¤Ê¤ëmemchr¡¤memset¡¤strtok¡¤¤Þ¤¿ ¤Ï strspn¤ÎÍͤʴؿô¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¤¥Þ¥¯¥í¤ÏÉÔ½½Ê¬¤Ç¤·¤ç¤¦¡¥¤½¤ì¤¾ ¤ì¤Î´Ø¿ô¤ò¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥(¥·¥¹¥Æ¥à¤ÎC¥é¥¤¥Ö¥é¥ê¤Î¤â¤Î¤¬¡¤¼êư¤Ç ºÇŬ²½¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¤Î¤Ç)ɬÍפʤȤ­¤À¤±¼ÂÁõ¤òÁȤ߹þ¤à´Êñ¤ÊÊýË¡ ¤È¤·¤Æ¡¤Î㤨¤Ðmemchr¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¤¤½¤ì¤òmemchr.c¤Ë½ñ¤­ ¹þ¤ß¡¤‘AC_REPLACE_FUNCS(memchr)’¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¤¹¡¥

Macro: AC_HEADER_SYS_WAIT

sys/wait.h¤¬Â¸ºß¤·¤Æ¡¤POSIX¤È¸ß´¹À­¤¬¤¢¤ë¾ì¹ç¡¤ HAVE_SYS_WAIT_H¤òÄêµÁ¤·¤Þ¤¹¡¥Èó¸ß´¹À­¤Ï¡¤sys/wait.h¤¬Â¸ºß ¤·¤Ê¤¤¾ì¹ç¤ä¡¤¥¹¥Æ¡¼¥¿¥¹¤ÎÃͤòÊݸ¤¹¤ë¤¿¤á¡¤int¤ÎÂå¤ï¤ê¤Ë¸Å¤¤ BSD¤Îunion wait»ÈÍѤ¹¤ë¾ì¹ç¤ËÀ¸¤¸¤Þ¤¹¡¥ sys/wait.h¤¬POSIX¤È¸ß´¹À­¤¬¤Ê¤¤¾ì¹ç¡¤¤½¤ì¤ò¥¤¥ó¥¯¥ë¡¼¥É ¤¹¤ëÂå¤ï¤ê¤Ë¡¤¤½¤ì¤é¤ÎÄ̾ï¤Î²ò¼á¤òÍѤ¤¤ÆPOSIX¤Î¥Þ¥¯¥í¤òÄêµÁ¤· ¤Æ¤¯¤À¤µ¤¤¡¥Î㤨¤Ð°Ê²¼¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡¥

#include <sys/types.h>
#if HAVE_SYS_WAIT_H
# include <sys/wait.h>
#endif
#ifndef WEXITSTATUS
# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
#endif
#ifndef WIFEXITED
# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
#endif

unistd.h¤¬POSIX¥·¥¹¥Æ¥à¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¤ _POSIX_VERSION¤¬ÄêµÁ¤µ¤ì¤Þ¤¹¡¥unistd.h¤¬Ìµ¤¤¾ì¹ç¡¤ÌÀ¤é¤«¤Ë POSIX¥·¥¹¥Æ¥à¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¤·¤«¤·¡¤unistd.h¤ò»ý¤Ä POSIX¤Ç¤Ï¤Ê¤¤¥·¥¹¥Æ¥à¤â¤¢¤ê¤Þ¤¹¡¥

¥·¥¹¥Æ¥à¤¬POSIX¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´ºº¤¹¤ëÊýË¡¤Ï°Ê²¼¤Î ¤è¤¦¤Ë¤·¤Þ¤¹¡¥

#if HAVE_UNISTD_H
# include <sys/types.h>
# include <unistd.h>
#endif

#ifdef _POSIX_VERSION
/* Code for POSIX systems.  */
#endif
Macro: AC_HEADER_TIME

¥×¥í¥°¥é¥à¤¬¡¤time.h¤Èsys/time.h¤ÎξÊý¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë²Ä ǽÀ­¤¬¤¢¤ë¾ì¹ç¡¤TIME_WITH_SYS_TIME¤òÄêµÁ¤·¤Þ¤¹¡¥¸Å¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¤ sys/time.h¤¬time.h¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¤¬¡¤ time.h¤ÏÊ£¿ô²ó¤Î¥¤¥ó¥¯¥ë¡¼¥É¤ËÂФ·¤ÆÊݸ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¤¥×¥í¥° ¥é¥à¤ÇÌÀ¼¨Åª¤ËξÊý¤Î¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¤³¤Î¥Þ¥¯ ¥í¤Ï¡¤Î㤨¤Ð¡¤struct tm¤ÈƱÍÍ¡¤struct timeval¤ò»ÈÍѤ¹¤ë¥× ¥í¥°¥é¥à¤ÇÌò¤ËΩ¤Á¤Þ¤¹¡¥ AC_CHECK_HEADERS(sys/time.h) ¤ò»ÈÍѤ·¤Æ ¤¤¤ë¤³¤È¤òÄ´ºº²Äǽ¤Ë¤¹¤ëHAVE_SYS_TIME_H¤È°ì½ï¤Ë»ÈÍѤ¹¤ë¤Î¤¬ºÇÁ±¤Î ÊýË¡¤Ç¤¹¡¥

#if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
#  include <sys/time.h>
# else
#  include <time.h>
# endif
#endif
Macro: AC_HEADER_TIOCGWINSZ

TIOCGWINSZ¤Î»ÈÍѤ¬<sys/ioctl.h>¤òÍ׵᤹¤ë¾ì¹ç¡¤ GWINSZ_IN_SYS_IOCTL¤òÄêµÁ¤·¤Þ¤¹¡¥¤½¤ì°Ê³°¤Ç¤Ï¡¤TIOCGWINSZ ¤Ï<termios.h>¤Ç¸«¤Ä¤«¤ë¤Ï¤º¤Ç¤¹¡¥

°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ»ÈÍѤ·¤Þ¤¹¡¥

#if HAVE_TERMIOS_H
# include <termios.h>
#endif

#if GWINSZ_IN_SYS_IOCTL
# include <sys/ioctl.h>
#endif

Next: , Previous: Header Portability, Up: Header Files   [Contents][Index]