feature_test_macros

Autres langues

Langue: ja

Version: 2006-04-26 (openSuse - 09/10/07)

Section: 7 (Divers)

̾Á°

feature_test_macros - µ¡Ç½¸¡ºº¥Þ¥¯¥í

½ñ¼°


#include <features.h>

 

ÀâÌÀ

µ¡Ç½¸¡ºº¥Þ¥¯¥í (feature test macro) ¤Ë¤è¤ê¡¢¥×¥í¥°¥é¥Þ¤Ï ¥×¥í¥°¥é¥à¤¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ëºÝ¤Ë¥·¥¹¥Æ¥à¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ë¤è¤ê ¸ø³«¤µ¤ì¤ëÄêµÁ¤òÀ©¸æ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤Îµ¡Ç½¤ò»È¤¦¤È¡¢Èóɸ½à¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤Ç¤­¡¢ °Ü¿¢À­¤Î¤¢¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òºîÀ®¤¹¤ë¤Î¤ËÌòΩ¤Ä¡£ ¾¤Î¥Þ¥¯¥í¤ò»È¤¦¤È¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¸ø³«¤µ¤ì¤Ê¤¤Èóɸ½à¤ÎÄêµÁ¤ò ¸ø³«¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ °Ê²¼¤ÇÀâÌÀ¤¹¤ëµ¡Ç½¸¡ºº¥Þ¥¯¥í¤Î¤½¤ì¤¾¤ì¤ÎÀµ³Î¤Ê±Æ¶Á¤ò³Îǧ¤¹¤ë¤Ë¤Ï¡¢ ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë <features.h> ¤òÄ´¤Ù¤ì¤Ð¤è¤¤¡£

µ¡Ç½¸¡ºº¥Þ¥¯¥í¤òµ¡Ç½¤µ¤»¤ë¤Ë¤Ï¡¢ ¡Ö¤¢¤é¤æ¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëÁ°¤Ë¡× µ¡Ç½¸¡ºº¥Þ¥¯¥í¤òÄêµÁ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¤³¤ì¤ò¼Â¸½¤¹¤ë¤Ë¤Ï¡¢ ¥³¥ó¥Ñ¥¤¥ë¥³¥Þ¥ó¥É¤Ç»ØÄꤹ¤ëÊýË¡ (cc -DMACRO=value) ¤È¡¢¥½¡¼¥¹¥³¡¼¥É¤Ç¤¢¤é¤æ¤ë¥Ø¥Ã¥À¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëÁ°¤Ë ɬÍפʥޥ¯¥í¤òÄêµÁ¤¹¤ëÊýË¡¤¬¤¢¤ë¡£

Linux/glibc ¤Ï°Ê²¼¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ò²ò¼á¤¹¤ë:

_POSIX_C_SOURCE
¤³¤Î¥Þ¥¯¥í¤òÃÍ 1 ¤ÇÄêµÁ¤¹¤ë¤È¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç POSIX.1-1990 ¤È ISO C (1990) ¤Ë½àµò¤¹¤ëÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£ 199309 °Ê¾å¤ÎÃͤÇÄêµÁ¤¹¤ë¤È¡¢ POSIX.1b (¥ê¥¢¥ë¥¿¥¤¥à³ÈÄ¥) ´ØÏ¢¤ÎÄêµÁ¤¬ÄɲäǸø³«¤µ¤ì¤ë¡£ 199506 °Ê¾å¤ÎÃͤÇÄêµÁ¤¹¤ë¤È¡¢ POSIX.1c (¥¹¥ì¥Ã¥É) ´ØÏ¢¤ÎÄêµÁ¤¬ÄɲäǸø³«¤µ¤ì¤ë¡£ ÃÍ 200112 ¤ÇÄêµÁ¤¹¤ë¤È¡¢(XSI ³ÈÄ¥¤ò½ü¤¯) POSIX.1-2001 ´ðËÜ»ÅÍÍ¤Ë Âбþ¤¹¤ëÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
_POSIX_SOURCE
¤³¤Î¥Þ¥¯¥í¤ÏÇÑ»ßͽÄê¤Ç¤¢¤ë¡£ ¤³¤Î¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤ë¤È¡¢Ãͤ˴ؤï¤é¤º¡¢ _POSIX_C_SOURCE ¤òÃÍ 1 ¤ÇÄêµÁ¤¹¤ë¤Î¤ÈÅù²Á¤È¤Ê¤ë¡£
_XOPEN_SOURCE
¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢¤É¤ó¤ÊÃͤǤ⡢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç POSIX.1, POSIX.2, XPG4 ¤Ë½àµò¤¹¤ëÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£ 500 °Ê¾å¤ÎÃͤÇÄêµÁ¤¹¤ë¤È¡¢SUSv2 (UNIX 98) ´ØÏ¢¤ÎÄêµÁ¤¬ ÄɲäǸø³«¤µ¤ì¤ë¡£ 600 °Ê¾å¤ÎÃͤÇÄêµÁ¤¹¤ë¤È¡¢ SUSv3 (UNIX 03; POSIX.1-2001 ´ðËÜ»ÅÍÍ + XSI ³ÈÄ¥¤ÈƱ¤¸) ´ØÏ¢¤ÎÄêµÁ¤È C 99 ¤Ç¤ÎÄêµÁ¤¬ÄɲäǸø³«¤µ¤ì¤ë¡£
_XOPEN_SOURCE_EXTENDED
¤³¤Î¥Þ¥¯¥í¤¬ÃÍ 1 ¤ÇÄêµÁ¤µ¤ì¡¢¤µ¤é¤Ë _XOPEN_SOURCE ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤È¡¢XPG4v2 UNIX ³ÈÄ¥¤ËÂбþ¤¹¤ëÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
_ISOC99_SOURCE
ISO C (1990) ¤Î C 99 ³ÈÄ¥¤ò¸ø³«¤¹¤ë¡£
_LARGEFILE64_SOURCE
LFS (Large File Summit) ¤Ë¤è¤ê "»ÃÄê³ÈÄ¥ (transitional extension)" Single UNIX Specification ¤È¤·¤Æµ¬Äꤵ¤ì¤¿ÂåÂØ API ¤Ë´Ø¤¹¤ëÄêµÁ¤ò¸ø³«¤¹¤ë (http://opengroup.org/platform/lfs.html »²¾È)¡£
_FILE_OFFSET_BITS
¤³¤Î¥Þ¥¯¥í¤òÃÍ 64 ¤ÇÄêµÁ¤¹¤ë¤È¡¢¥Õ¥¡¥¤¥ë I/O ¤È¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÁàºî¤Ë ´ØÏ¢¤¹¤ë 32 ¥Ó¥Ã¥ÈÈǤδؿô¤È¥Ç¡¼¥¿¥¿¥¤¥×¤Ï¼«Æ°Åª¤Ë 64¥Ó¥Ã¥ÈÈÇ¤Ë ÊÑ´¹¤µ¤ì¤ë¡£ ¤³¤ì¤Ï¡¢32¥Ó¥Ã¥È¥·¥¹¥Æ¥à¤ÇÂ礭¤Ê¥Õ¥¡¥¤¥ë (> 2¥®¥¬¥Ð¥¤¥È) ¤Î I/O ¤ò¼Â¹Ô¤¹¤ëºÝ¤ËÌòΩ¤Ä¡£
_BSD_SOURCE
¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È (Ãͤ˴ؤï¤é¤º) ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç BSD ͳÍè¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£ ¤Þ¤¿¡¢¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢ÁêÍƤì¤Ê¤¤É¸½à¤¬Â¸ºß¤¹¤ë¾õ¶·¤Ë¤ª¤¤¤Æ BSD ͳÍè¤ÎÄêµÁ¤òÍ¥À褹¤ë¤è¤¦¤Ë¤Ê¤ë¡£
_SVID_SOURCE
¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È (Ãͤ˴ؤï¤é¤º) ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç System V ͳÍè¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤ë (SVID == System V Interface Definition; standards(7) »²¾È)¡£
_GNU_SOURCE
¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È (Ãͤ˴ؤï¤é¤º) °Ê²¼¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤Î¤È Åù²Á¤Ë¤Ê¤ë: _BSD_SOURCE, _SVID_SOURCE, _LARGEFILE64_SOURCE, _ISOC99_SOURCE, ÃÍ 1999506 ¤Î _POSIX_C_SOURCE ÃÍ 600 ¤Î _XOPEN_SOURCE¡£ ¤µ¤é¤Ë¡¢³Æ¼ï¤Î GNU ¸ÇÍ­¤Î³ÈÄ¥¤â¸ø³«¤µ¤ì¤ë¡£
_REENTRANT
¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢¤¤¤¯¤Ä¤«¤Î¥ê¥¨¥ó¥È¥é¥ó¥È (ºÆÆþ²Äǽ) ¤Ê´Ø¿ô ÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¡¦¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¤³¤ÎÂå¤ï¤ê¤Ë cc -pthread ¤ò»ÈÍѤ¹¤ë¤³¤È¡£
_THREAD_SAFE
_REENTRANT ¤ÎƱµÁ¸ì¡£ ¾¤Î¤¤¤¯¤Ä¤«¤Î¼ÂÁõ¤È¤Î¸ß´¹À­¤òÄ󶡤¹¤ë¤¿¤á¤Î¤â¤Î¡£
_FORTIFY_SOURCE
¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢Ê¸»úÎó¤ä¥á¥â¥ê¤ÎÁàºî¤ò¹Ô¤¦ÍÍ¡¹¤Ê´Ø¿ô¤ò »ÈÍѤ¹¤ëºÝ¤Ë¥Ð¥Ã¥Õ¥¡¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤ò¸¡½Ð¤¹¤ë¤¿¤á¤Î·Ú¤á¤Î¥Á¥§¥Ã¥¯¤¬ ¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£¤¹¤Ù¤Æ¤Î¥Ð¥Ã¥Õ¥¡¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¬¸¡½Ð¤µ¤ì¤ë ¤ï¤±¤Ç¤Ï¤Ê¤¯¡¢¤¢¤¯¤Þ¤Ç¤è¤¯¤¢¤ëÎã¤Ë¤Ä¤¤¤Æ¤À¤±¤Ç¤¢¤ë¡£ ¸½ºß¤Î¼ÂÁõ¤Ç¤Ï¡¢°Ê²¼¤Î´Ø¿ô¤Ë¥Á¥§¥Ã¥¯¤¬Äɲ䵤ì¤Æ¤¤¤ë: memcpy(3), mempcpy(3), memmove(3), memset(3), stpcpy(3), strcpy(3), strncpy(3), strcat(3), strncat(3), sprintf(3), snprintf(3), vsprintf(3), vsnprintf(3), gets(3). _FORTIFY_SOURCE ¤¬ 1 ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤ÎºÇŬ²½¥ì¥Ù¥ë¤¬ 1 (gcc -O1) ¤«¤½¤ì°Ê¾å¤Ç¤¢¤ì¤Ð¡¢µ¬³Ê¤Ë½àµò¤¹¤ë¥×¥í¥°¥é¥à¤Î¿¶¤ëÉñ¤¤¤ò ÊѲ½¤µ¤»¤Ê¤¤¤è¤¦¤Ê¥Á¥§¥Ã¥¯¤¬¼Â¹Ô¤µ¤ì¤ë¡£ _FORTIFY_SOURCE ¤¬ 2 ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¤µ¤é¤Ê¤ë¥Á¥§¥Ã¥¯¤¬Äɲ䵤ì¤ë¤¬¡¢ µ¬³Ê¤Ë½àµò¤¹¤ë¥×¥í¥°¥é¥à¤Î¤¤¤¯¤Ä¤«¤¬¼ºÇÔ¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¡£ ¤¤¤¯¤Ä¤«¤Î¥Á¥§¥Ã¥¯¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¼Â¹Ô¤Ç¤­¡¢¥³¥ó¥Ñ¥¤¥é¤Î·Ù¹ð¤È¤·¤Æ ɽ¼¨¤µ¤ì¤ë¡£Â¾¤Î¥Á¥§¥Ã¥¯¤Ï¼Â¹Ô»þ¤Ë¹Ô¤ï¤ì¡¢¥Á¥§¥Ã¥¯¤Ë¼ºÇÔ¤·¤¿¾ì¹ç ¤Ë¤Ï¼Â¹Ô»þ¥¨¥é¡¼¤È¤Ê¤ë¡£ ¤³¤Î¥Þ¥¯¥í¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¥³¥ó¥Ñ¥¤¥é¤ÎÂбþ¤¬É¬ÍפǤ¢¤ê¡¢ ¥Ð¡¼¥¸¥ç¥ó 4.0 °Ê¹ß¤Î gcc(1) ¤ÇÍøÍѤǤ­¤ë¡£

gcc(1) ¤¬µ¯Æ°¤µ¤ì¤ë¤È¡¢¥Ç¥Õ¥©¥ë¥È¤Ç _BSD_SOURCE, _SVID_SOURCE, _POSIX_SOURCE, _POSIX_C_SOURCE=199506 ¤¬ÄêµÁ¤µ¤ì¤ë¡£ ¸Ä¡¹¤Î¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤ë¤È¡¢ÌÀ¼¨Åª¤ËÄêµÁ¤µ¤ì¤¿¾ì¹ç¤ò½ü¤­ ¾¤Î¥Þ¥¯¥í¤Ï̵¸ú¤È¤Ê¤ë (Îã³°: _POSIX_C_SOURCE ¤¬Â¾¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ _POSIX_C_SOURCE ¤Ï¾ï¤ËÃÍ 200112 (¥Ð¡¼¥¸¥ç¥ó 2.4 ¤è¤êÁ°¤Î glibc ¤Ç¤Ï 199506) ¤ÇÄêµÁ¤µ¤ì¤ë¡£ ⤷¡¢¥³¥ó¥Ñ¥¤¥é¤¬»ÈÍѤ¹¤ëɸ½à¤ò»ØÄꤹ¤ë¥â¡¼¥É¤Çµ¯Æ°¤µ¤ì¤¿¾ì¹ç (-std=c99 ¥Õ¥é¥°) ¤Ï¤³¤Î¸Â¤ê¤Ç¤Ï¤Ê¤¤)¡£ ¤Þ¤¿¡¢Ê£¿ô¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£ ¤³¤Î¾ì¹ç¡¢ÄêµÁ¤·¤¿¥Þ¥¯¥í¤Ï¤¹¤Ù¤ÆÍ­¸ú¤Ë¤Ê¤ë¡£

½àµò

POSIX.1 ¤Ç¤Ï _POSIX_C_SOURCE, _POSIX_SOURCE, _XOPEN_SOURCE ¤¬µ¬Äꤵ¤ì¤Æ¤¤¤ë¡£ _XOPEN_SOURCE_EXTENDED ¤Ï XPG4v2 (ÊÌ̾ SUSv1) ¤Çµ¬Äꤵ¤ì¤Æ¤¤¤¿¡£ _FILE_OFFSET_BITS ¤Ï¤É¤Îɸ½à¤Ç¤âµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¤¬¡¢ ¾¤Î¤¤¤¯¤Ä¤«¤Î¼ÂÁõ¤ÇºÎÍѤµ¤ì¤Æ¤¤¤ë¡£ _BSD_SOURCE, _SVID_SOURCE, _GNU_SOURCE, _FORTIFY_SOURCE, _REENTRANT, _THREAD_SAFE ¤Ï Linux (glibc) ¸ÇÍ­¤Ç¤¢¤ë¡£

Ãí°Õ

<features.h> ¤Ï Linux/glibc ¸ÇÍ­¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¡£ ¾¤Î¥·¥¹¥Æ¥à¤Ë¤âƱÍͤÎÌÜŪ¤Î¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¤¬¡¢ÉáÄ̤ϰ㤦̾Á°¤Ç¤¢¤ë¡£ ¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ï¡¢Â¾¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ë¤è¤êɬÍפ˱þ¤¸¤Æ ¼«Æ°Åª¤Ë¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ë¡£µ¡Ç½¸¡ºº¥Þ¥¯¥í¤òÍøÍѤ¹¤ë¤¿¤á¤Ë ÌÀ¼¨Åª¤Ë¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëɬÍפϤʤ¤¡£

¾åµ­¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤Î¤¦¤Á¤É¤ì¤¬ÄêµÁ¤µ¤ì¤¿¤«¤Ë¤·¤¿¤¬¤Ã¤Æ¡¢ <features.h> ¤Ï¡¢Â¾¤Î glibc ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç¥Á¥§¥Ã¥¯¤µ¤ì¤ë³Æ¼ï¤Î¾¤Î¥Þ¥¯¥í¤ò¡¢ ÆâÉô¤ÇÄêµÁ¤¹¤ë¡£¤³¤ì¤é¤Î¥Þ¥¯¥í¤Î̾Á°¤Ï¥¢¥ó¥À¡¼¥¹¥³¥¢ 2¤Ä¤Ç»Ï¤Þ¤ë (Î㤨¤Ð __USE_MISC)¡£ ¥æ¡¼¥¶¥×¥í¥°¥é¥à¤Ï¤³¤ì¤é¤Î¥Þ¥¯¥í¤ò ·è¤·¤Æ ľÀÜÄêµÁ¤¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£ Âå¤ï¤ê¤Ë¡¢¾åµ­¤Î¥ê¥¹¥È¤Ë¤¢¤ëŬÀڤʵ¡Ç½¸¡ºº¥Þ¥¯¥í¤òÍøÍѤ¹¤Ù¤­¤Ç¤¢¤ë¡£