Provided by: manpages-ja_0.5.0.0.20070415-1_all bug
     前
        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 exten-
               sion)"  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 固佑粒板イ盡開される。
 
        gcc(1)    が起動されると、デフォルトで    _BSD_SOURCE,    _SVID_SOURCE,
        _POSIX_SOURCE,           POSIX_C_SOURCE=199506           が定義される。
        個々のマクロが定義されると、明示的に定義された場合を除
        他のマクロは無効となる。(例外:                           POSIX_C_SOURCE
        が他で定義されていない場合には、   POSIX_C_SOURCE    は常に値    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 は Linux (glibc) 固佑任△襦
 
     意
        <features.h>       は      Linux/glibc      固佑離悒奪瀬侫.ぅ襪任△襦
        他のシステムにも同様の目的のファイルがあるが、普通は違う名前である。
        このヘッダファイルは、他のヘッダファイルにより必要に応じて
        自動的にインクルードされる。機能検査マクロを利用するために
        明示的にインクルードする必要はない。