OSDN Git Service

(split) LDP: Update release pages based on LDP 3.54 release
[linuxjm/LDP_man-pages.git] / release / man7 / feature_test_macros.7
1 .\" This manpage is Copyright (C) 2006, Michael Kerrisk
2 .\"
3 .\" %%%LICENSE_START(VERBATIM)
4 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
7 .\"
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
12 .\"
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein.  The author(s) may not
17 .\" have taken the same level of care in the production of this manual,
18 .\" which is licensed free of charge, as they might when working
19 .\" professionally.
20 .\"
21 .\" Formatted or processed versions of this manual, if unaccompanied by
22 .\" the source, must acknowledge the copyright and authors of this work.
23 .\" %%%LICENSE_END
24 .\"
25 .\"*******************************************************************
26 .\"
27 .\" This file was generated with po4a. Translate the source file.
28 .\"
29 .\"*******************************************************************
30 .\"
31 .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
32 .\" Translated 2006-07-16, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
33 .\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46
34 .\" Updated 2007-09-08, Akihiro MOTOKI, LDP v2.64
35 .\" Updated 2009-04-23, Akihiro MOTOKI, LDP v3.21
36 .\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
37 .\"
38 .TH FEATURE_TEST_MACROS 7 2012\-08\-05 Linux "Linux Programmer's Manual"
39 .SH 名前
40 feature_test_macros \- 機能検査マクロ
41 .SH 書式
42 .nf
43 \fB#include <features.h>\fP
44 .fi
45 .SH 説明
46 機能検査マクロ (feature test macro) により、プログラマは プログラムがコンパイルされる際にシステムのヘッダファイルにより
47 公開される定義を制御することができる。
48
49 \fB注意:\fP 機能検査マクロを機能させるには、機能検査マクロの定義を 「どのヘッダファイルのインクルードよりも前で」行わなければならない。
50 これを実現するには、 コンパイルコマンドで指定する方法 (\fIcc \-DMACRO=value\fP)  と、ソースコード内で必要なマクロの定義を
51 どのヘッダのインクルードよりも前で行う方法がある。
52
53 機能検査マクロを使うと、非標準の定義が公開されないようにでき、 移植性のあるアプリケーションを作成するのに役立つ。
54 他のマクロを使うと、デフォルトでは公開されない非標準の定義を 公開することができる。 以下で説明する機能検査マクロのそれぞれの正確な影響を確認するには、
55 ヘッダファイル \fI<features.h>\fP を調べればよい。
56 .SS マニュアルページでの機能検査マクロの要件の規定
57 関数が機能検査マクロの定義を必要とする場合、 マニュアルページの書式 (SYNOPSIS) の節に 以下の形式の注釈を入れる (以下の例は
58 \fBacct\fP(2)  のマニュアルページからの引用である)。
59 .RS 8
60 .sp
61 \fB#include <unistd.h>\fP
62 .sp
63 \fBint acct(const char *\fP\fIfilename\fP\fB);\fP
64 .sp
65 .nf
66 .in -4n
67 glibc 向けの機能検査マクロの要件
68 (\fBfeature_test_macros\fP(7)
69 参照):
70 .fi
71 .in
72 .sp
73 \fBacct\fP(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
74 .RE
75 .PP
76 \fB||\fP は、 \fBacct\fP(2)  の定義を \fI<unistd.h>\fP
77 から得るには、以下のマクロの定義のいずれかを、どのヘッダファイルの インクルードよりも前で行わなければならないことを意味する。
78 .RS
79 .nf
80
81 #define _BSD_SOURCE
82 #define _XOPEN_SOURCE        /* or any value < 500 */
83 .fi
84 .RE
85 .PP
86 別の方法としては、等価な定義をコンパイル用のコマンドで 指定することもできる。
87 .RS
88 .nf
89
90 cc \-D_BSD_SOURCE
91 cc \-D_XOPEN_SOURCE           # Or any value < 500
92 .fi
93 .RE
94 .PP
95 後で述べるが、 \fB「いくつかの機能検査マクロはデフォルトで定義される」\fP 点に注意すること。 このため、「書式」に記載された機能検査マクロを常に
96 明示的に指定する必要があるわけではない。
97
98 あまり多くないが、マニュアルページによっては、 機能検査マクロの要件を以下のように簡単な表現で記載する場合がある。 (以下の例は
99 \fBreadahead\fP(2)  のマニュアルページからの引用である)。
100 .RS
101 .nf
102
103 \fB#define _GNU_SOURCE\fP
104 \fB#include <fcntl.h>\fP
105 .sp
106 \fBssize_t readahead(int \fP\fIfd\fP\fB, off64_t *\fP\fIoffset\fP\fB, size_t \fP\fIcount\fP\fB);\fP
107 .fi
108 .RE
109 .PP
110 関数定義の公開に使える機能検査マクロが一つだけで、 デフォルトではそのマクロが定義されない場合に、 この形式の表現を利用する。
111 .SS "glibc が解釈する機能検査マクロ"
112 .\" The details in glibc 2.0 are simpler, but combining a
113 .\" a description of them with the details in later glibc versions
114 .\" would make for a complicated description.
115 以下では、Linux glibc 2.\fIx\fP (\fIx\fP > 0) において、 機能検査マクロがどのように扱われるかを説明する。
116
117 Linux/glibc は以下の機能検査マクロを解釈する:
118 .TP 
119 \fB__STRICT_ANSI__\fP
120 ISO 標準の C。 \fBgcc\fP(1)  を \fI\-std=c99\fP や \fI\-ansi\fP などのフラグを付けて起動した場合、
121 このマクロは暗黙のうちに定義される。
122 .TP 
123 \fB_POSIX_C_SOURCE\fP
124 このマクロを定義すると、ヘッダファイルで以下の定義が公開される。
125 .RS
126 .IP \(bu 3
127 値が 1 の場合、POSIX.1\-1990 と ISO C (1990) に準拠する定義が公開される。
128 .IP \(bu
129 値が 2 以上の場合、 POSIX.2\-1992 関連の定義も追加で公開される。
130 .IP \(bu
131 .\" 199506L functionality is available only since glibc 2.1
132 値が 199309 以上の場合、 POSIX.1b (リアルタイム拡張) 関連の定義が追加で公開される。
133 .IP \(bu
134 値が 199506 以上の場合、 POSIX.1c (スレッド) 関連の定義が追加で公開される。
135 .IP \(bu
136 (glibc 2.3.3 以降)  値が 200112L 以上の場合、 (XSI 拡張を除く) POSIX.1\-2001
137 基本仕様に対応する定義が公開される。
138 .IP \(bu
139 (glibc 2.10 以降)  値が 200809L 以上の場合、 (XSI 拡張を除く) POSIX.1\-2008
140 基本仕様に対応する定義が公開される。
141 .RE
142 .TP 
143 \fB_POSIX_SOURCE\fP
144 このマクロは廃止予定である。 このマクロが定義されると、値に関わらず、 \fB_POSIX_C_SOURCE\fP を値 1 で定義するのと等価となる。
145 .TP 
146 \fB_XOPEN_SOURCE\fP
147 このマクロを定義すると、ヘッダファイルで以下の定義が公開される。
148 .RS
149 .IP \(bu 3
150 どんな値でも、ヘッダファイルで POSIX.1, POSIX.2, XPG4 に準拠する定義が公開される。
151 .IP \(bu
152 値が 500 以上の場合、 SUSv2 (UNIX 98) 関連の定義が追加で公開される。
153 .IP \(bu
154 (glibc 2.2 以降)  値が 600 以上の場合、 SUSv3 (UNIX 03; POSIX.1\-2001 基本仕様 + XSI 拡張と同じ)
155 関連の定義と C99 での定義が追加で公開される。
156 .IP \(bu
157 (glibc 2.10 以降)  値が 700 以上の場合、 SUSv4 (POSIX.1\-2008 基本仕様 + XSI 拡張と同じ)
158 関連の定義が追加で公開される。
159 .RE
160 .TP 
161 \fB_XOPEN_SOURCE_EXTENDED\fP
162 このマクロが定義され、さらに \fB_XOPEN_SOURCE\fP が定義されていると、XPG4v2 (SUSv1) UNIX 拡張 (UNIX 95)
163 に対応する定義が公開される。 \fB_XOPEN_SOURCE\fP が 500 以上の値で定義された場合、このマクロは暗黙のうちに定義される。
164 .TP 
165 \fB_ISOC95_SOURCE\fP
166 ISO C (1990) Amendment 1 の定義 (C95 としても知られる) が公開される。
167 C95 における主要な変更点は国際化文字集合のサポートであった。
168 C95 の変更点は、これに続く C99 標準にも含まれた
169 (言い換えると、\fB_ISOC99_SOURCE\fP を定義すると暗黙のうちに \fB_ISOC95_SOURCE\fP
170 を定義されることを意味する)。
171 .TP 
172 \fB_ISOC99_SOURCE\fP
173 ISO C (1990) の C99 拡張を公開する。 このマクロは glibc 2.1.3 以降で認識される。 初期のバージョン 2.1.x の
174 glibc では、これと等価な \fB_ISOC9X_SOURCE\fP という名前のマクロが使われていた (なぜなら、C99
175 標準はまだ確定していなかったからである)。 \fB_ISOC9X_SOURCE\fP マクロの使用は廃止されているが、 glibc
176 は過去との互換性のため今でもこのマクロを認識する。
177 .TP 
178 \fB_ISOC11_SOURCE\fP
179 ISO C11 標準に準拠した宣言を公開する。
180 このマクロは glibc 2.16 以降で認識される。
181 .TP 
182 \fB_LARGEFILE64_SOURCE\fP
183 LFS (Large File Summit) により "暫定拡張 (transitional extension)" Single UNIX
184 Specification として規定された代替 API (alternative API) に関する定義を公開する (
185 .UR http:\:/\:/opengroup.org\:/platform\:/lfs.html
186 .UE
187 参照)。 代替 API は新規オブジェクト
188 (関数と型) の集合で構成され、 その名前は "64" で終わる (例えば、 \fIoff_t\fP に対応するのは \fIoff64_t\fP、
189 \fBlseek\fP()  に対応するのは \fBlseek64\fP()  である)。 新しいプログラムではこのインタフェースを利用しないこと。 代わりに
190 \fI_FILE_OFFSET_BITS=64\fP を利用すること。
191 .TP 
192 \fB_FILE_OFFSET_BITS\fP
193 Defining this macro with the value 64 automatically converts references to
194 32\-bit functions and data types related to file I/O and filesystem
195 operations into references to their 64\-bit counterparts.  This is useful for
196 performing I/O on large files (> 2 Gigabytes)  on 32\-bit systems.
197 (Defining this macro permits correctly written programs to use large files
198 with only a recompilation being required.)  64\-bit systems naturally permit
199 file sizes greater than 2 Gigabytes, and on those systems this macro has no
200 effect.
201 .TP 
202 \fB_BSD_SOURCE\fP
203 このマクロを定義すると (値に関わらず) ヘッダファイルで BSD 由来の定義が公開される。
204 また、このマクロを定義すると、相容れない標準が存在する状況において BSD 由来の定義を優先するようになる。 ただし、 \fB_SVID_SOURCE\fP,
205 \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP, \fB_XOPEN_SOURCE\fP,
206 \fB_XOPEN_SOURCE_EXTENDED\fP, \fB_GNU_SOURCE\fP が一つでも定義された場合には、BSD 由来の定義は優先されなくなる。
207 .TP 
208 \fB_SVID_SOURCE\fP
209 このマクロを定義すると (値に関わらず) ヘッダファイルで System V 由来の定義が公開される (SVID == System V
210 Interface Definition; \fBstandards\fP(7)  参照)。
211 .TP 
212 \fB_ATFILE_SOURCE\fP (glibc 2.4 以降)
213 このマクロを定義すると (値に関わらず) ヘッダファイルで 名前の末尾が "at" の各種の関数の定義が公開される。 \fBopenat\fP(2)  参照。
214 glibc 2.10 以降では、 \fB_POSIX_C_SOURCE\fP が 200809L 以上の値で定義された場合には、
215 このマクロも暗黙のうちに定義される。
216 .TP 
217 \fB_GNU_SOURCE\fP
218 このマクロを定義すると (値に関わらず) 以下のマクロを定義するのと 等価になる: \fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP,
219 \fB_ATFILE_SOURCE\fP, \fB_LARGEFILE64_SOURCE\fP, \fB_ISOC99_SOURCE\fP,
220 \fB_XOPEN_SOURCE_EXTENDED\fP, \fB_POSIX_SOURCE\fP, 値 200809L の \fB_POSIX_C_SOURCE\fP
221 (バージョン 2.10 より前の glibc では値は 200112L、 バージョン 2.5 より前の glibc では値は 199506L、
222 バージョン 2.1 より前の glibc では値は 199309L), 値 700 の \fB_XOPEN_SOURCE\fP (バージョン 2.10
223 より前の glibc では値は 600、 バージョン 2.2 より前の glibc では値は 500)。 さらに、各種の GNU
224 固有の拡張も公開される。 指定された標準に矛盾があった場合は、 BSD 由来の定義が優先されなくなる。
225 .TP 
226 \fB_REENTRANT\fP
227 このマクロを定義すると、いくつかのリエントラント (再入可能) な関数 定義が公開される。マルチスレッド・プログラムでは、この代わりに \fIcc\ \-pthread\fP を使用すること。
228 .TP 
229 \fB_THREAD_SAFE\fP
230 \fB_REENTRANT\fP の同義語。 他のいくつかの実装との互換性を提供するためのもの。
231 .TP 
232 \fB_FORTIFY_SOURCE\fP (glibc 2.3.4 以降)
233 .\" For more detail, see:
234 .\" http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
235 .\" [PATCH] Object size checking to prevent (some) buffer overflows
236 .\" * From: Jakub Jelinek <jakub at redhat dot com>
237 .\" * To: gcc-patches at gcc dot gnu dot org
238 .\" * Date: Tue, 21 Sep 2004 04:16:40 -0400
239 Defining this macro causes some lightweight checks to be performed to detect
240 some buffer overflow errors when employing various string and memory
241 manipulation functions.  Not all buffer overflows are detected, just some
242 common cases.  In the current implementation, checks are added for calls to
243 \fBmemcpy\fP(3), \fBmempcpy\fP(3), \fBmemmove\fP(3), \fBmemset\fP(3), \fBstpcpy\fP(3),
244 \fBstrcpy\fP(3), \fBstrncpy\fP(3), \fBstrcat\fP(3), \fBstrncat\fP(3), \fBsprintf\fP(3),
245 \fBsnprintf\fP(3), \fBvsprintf\fP(3), \fBvsnprintf\fP(3), and \fBgets\fP(3).  If
246 \fB_FORTIFY_SOURCE\fP is set to 1, with compiler optimization level 1 (\fIgcc\ \-O1\fP)  and above, checks that shouldn't change the behavior of conforming
247 programs are performed.  With \fB_FORTIFY_SOURCE\fP set to 2 some more checking
248 is added, but some conforming programs might fail.  Some of the checks can
249 be performed at compile time, and result in compiler warnings; other checks
250 take place at run time, and result in a run\-time error if the check fails.
251 Use of this macro requires compiler support, available with \fBgcc\fP(1)  since
252 version 4.0.
253 .SS デフォルトの定義、暗黙の定義、組み合わせ定義
254 .PP
255 機能検査マクロが一つも明示的に定義されなかった場合、 デフォルトで機能検査マクロ \fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP,
256 \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP=200809L が定義される (バージョン 2.10 より前の glibc
257 では値は 200112L、 バージョン 2.4 より前の glibc では値は 199506L、 バージョン 2.1 より前の glibc では値は
258 199309L)。
259 .PP
260 \fB__STRICT_ANSI__\fP, \fB_ISOC99_SOURCE\fP, \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP,
261 \fB_XOPEN_SOURCE\fP, \fB_XOPEN_SOURCE_EXTENDED\fP, \fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP
262 のいずれかが明示的に定義された場合、 \fB_BSD_SOURCE\fP と \fB_SVID_SOURCE\fP はデフォルトでは定義されない。
263
264 \fB_POSIX_SOURCE\fP と \fB_POSIX_C_SOURCE\fP が明示的に定義されない場合で、 \fB__STRICT_ANSI__\fP
265 が定義されない、もしくは \fB_XOPEN_SOURCE\fP が 500 以上の値で定義されたときには、
266 .RS 3
267 .IP * 3
268 \fB_POSIX_SOURCE\fP が値 1 で定義され、かつ
269 .IP *
270 \fB_POSIX_C_SOURCE\fP は以下の値のいずれか一つで定義される。
271 .RS 6
272 .IP \(bu 3
273 2 (\fB_XOPEN_SOURCE\fP が 500 未満の値で定義された場合)
274 .IP \(bu
275 199506L (\fB_XOPEN_SOURCE\fP が 500 以上 600 未満の値で定義された場合)
276 .IP \(bu
277 (glibc 2.4 以降)  200112L (\fBXOPEN_SOURCE\fP が 600 以上 700 未満の値で定義された場合)
278 .IP \(bu
279 (glibc 2.10 以降)  200809L (\fBXOPEN_SOURCE\fP が 700 以上の値で定義された場合)
280 .IP \(bu
281 古いバージョンの glibc では \fB_POSIX_C_SOURCE\fP の値として 200112L や 200809L は存在せず、
282 \fB_POSIX_C_SOURCE\fP の値がどうなるかは glibc のバージョンにより異なる。
283 .IP \(bu
284 \fB_XOPEN_SOURCE\fP が未定義の場合、 \fB_POSIX_C_SOURCE\fP の値は glibc のバージョンにより異なる。 バージョン
285 2.4 より前の glibc では 199506L、 バージョン 2.4 以降 2.9 未満では 200112L、 glibc 2.10 以降では
286 200809L となる。
287 .RE
288 .RE
289 .PP
290 また、複数のマクロを定義することもできる。 この場合、定義したマクロはすべて有効になる。
291 .SH 準拠
292 POSIX.1 では \fB_POSIX_C_SOURCE\fP, \fB_POSIX_SOURCE\fP, \fB_XOPEN_SOURCE\fP が規定されている。
293 \fB_XOPEN_SOURCE_EXTENDED\fP は XPG4v2 (別名 SUSv1) で規定されていた。
294
295 \fB_FILE_OFFSET_BITS\fP はどの標準でも規定されていないが、 他のいくつかの実装で採用されている。
296
297 \fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP, \fB_ATFILE_SOURCE\fP, \fB_GNU_SOURCE\fP,
298 \fB_FORTIFY_SOURCE\fP, \fB_REENTRANT\fP, \fB_THREAD_SAFE\fP は Linux (glibc) 固有である。
299 .SH 注意
300 \fI<features.h>\fP は Linux/glibc 固有のヘッダファイルである。
301 他のシステムにも同様の目的のファイルがあるが、普通は違う名前である。 このヘッダファイルは、他のヘッダファイルにより必要に応じて
302 自動的にインクルードされる。機能検査マクロを利用するために 明示的にインクルードする必要はない。
303
304 上記の機能検査マクロのうちどれが定義されたかにしたがって、 \fI<features.h>\fP は、他の glibc
305 ヘッダファイルでチェックされる各種の他のマクロを、 内部で定義する。これらのマクロの名前はアンダースコア 2つで始まる (例えば
306 \fB__USE_MISC\fP)。 ユーザプログラムはこれらのマクロを \fI決して\fP 直接定義すべきではない。
307 代わりに、上記のリストにある適切な機能検査マクロを利用すべきである。
308 .SH 例
309 下記のプログラムを使うと、各種の機能検査マクロが glibc のバージョン に応じてどのように設定されるかや、どの機能検査マクロが明示的に
310 設定されるか、を調べることができる。 以下に示すシェル・セッションは、 glibc 2.10 のシステムでの実行結果の例である。
311 .in +4n
312 .nf
313
314 $ \fBcc ftm.c\fP
315 $ \fB./a.out\fP
316 _POSIX_SOURCE defined
317 _POSIX_C_SOURCE defined: 200809L
318 _BSD_SOURCE defined
319 _SVID_SOURCE defined
320 _ATFILE_SOURCE defined
321 $ \fBcc \-D_XOPEN_SOURCE=500 ftm.c\fP
322 $ \fB./a.out\fP
323 _POSIX_SOURCE defined
324 _POSIX_C_SOURCE defined: 199506L
325 _XOPEN_SOURCE defined: 500
326 $ \fBcc \-D_GNU_SOURCE ftm.c\fP
327 $ \fB./a.out\fP
328 _POSIX_SOURCE defined
329 _POSIX_C_SOURCE defined: 200809L
330 _ISOC99_SOURCE defined
331 _XOPEN_SOURCE defined: 700
332 _XOPEN_SOURCE_EXTENDED defined
333 _LARGEFILE64_SOURCE defined
334 _BSD_SOURCE defined
335 _SVID_SOURCE defined
336 _ATFILE_SOURCE defined
337 _GNU_SOURCE defined
338 .fi
339 .in
340 .SS "Program source"
341 \&
342 .nf
343 /* ftm.c */
344
345 #include <stdio.h>
346 #include <unistd.h>
347 #include <stdlib.h>
348
349 int
350 main(int argc, char *argv[])
351 {
352 #ifdef _POSIX_SOURCE
353     printf("_POSIX_SOURCE defined\en");
354 #endif
355
356 #ifdef _POSIX_C_SOURCE
357     printf("_POSIX_C_SOURCE defined: %ldL\en", (long) _POSIX_C_SOURCE);
358 #endif
359
360 #ifdef _ISOC99_SOURCE
361     printf("_ISOC99_SOURCE defined\en");
362 #endif
363
364 #ifdef _XOPEN_SOURCE
365     printf("_XOPEN_SOURCE defined: %d\en", _XOPEN_SOURCE);
366 #endif
367
368 #ifdef _XOPEN_SOURCE_EXTENDED
369     printf("_XOPEN_SOURCE_EXTENDED defined\en");
370 #endif
371
372 #ifdef _LARGEFILE64_SOURCE
373     printf("_LARGEFILE64_SOURCE defined\en");
374 #endif
375
376 #ifdef _FILE_OFFSET_BITS
377     printf("_FILE_OFFSET_BITS defined: %d\en", _FILE_OFFSET_BITS);
378 #endif
379
380 #ifdef _BSD_SOURCE
381     printf("_BSD_SOURCE defined\en");
382 #endif
383
384 #ifdef _SVID_SOURCE
385     printf("_SVID_SOURCE defined\en");
386 #endif
387
388 #ifdef _ATFILE_SOURCE
389     printf("_ATFILE_SOURCE defined\en");
390 #endif
391
392 #ifdef _GNU_SOURCE
393     printf("_GNU_SOURCE defined\en");
394 #endif
395
396 #ifdef _REENTRANT
397     printf("_REENTRANT defined\en");
398 #endif
399
400 #ifdef _THREAD_SAFE
401     printf("_THREAD_SAFE defined\en");
402 #endif
403
404 #ifdef _FORTIFY_SOURCE
405     printf("_FORTIFY_SOURCE defined\en");
406 #endif
407
408     exit(EXIT_SUCCESS);
409 }
410 .fi
411 .SH 関連項目
412 \fBlibc\fP(7), \fBstandards\fP(7)
413
414 .\" But beware: the info libc document is out of date (Jul 07, mtk)
415 \fIinfo libc\fP の "Feature Test Macros" の節。
416
417 \fI/usr/include/features.h\fP
418 .SH この文書について
419 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
420 である。プロジェクトの説明とバグ報告に関する情報は
421 http://www.kernel.org/doc/man\-pages/ に書かれている。