Provided by:
manpages-ja_0.5.0.0.20070415-1_all 
前
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 固佑離悒奪瀬侫.ぅ襪任△襦
他のシステムにも同様の目的のファイルがあるが、普通は違う名前である。
このヘッダファイルは、他のヘッダファイルにより必要に応じて
自動的にインクルードされる。機能検査マクロを利用するために
明示的にインクルードする必要はない。