OSDN Git Service

a1b29c3582b6ed6e2d25a2e02c06994bbf02bfcf
[linuxjm/LDP_man-pages.git] / release / man7 / feature_test_macros.7
1 .\" Hey Emacs! This file is -*- nroff -*- source.
2 .\"
3 .\" This manpage is Copyright (C) 2006, Michael Kerrisk
4 .\"
5 .\" Permission is granted to make and distribute verbatim copies of this
6 .\" manual provided the copyright notice and this permission notice are
7 .\" preserved on all copies.
8 .\"
9 .\" Permission is granted to copy and distribute modified versions of this
10 .\" manual under the conditions for verbatim copying, provided that the
11 .\" entire resulting derived work is distributed under the terms of a
12 .\" permission notice identical to this one.
13 .\"
14 .\" Since the Linux kernel and libraries are constantly changing, this
15 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
16 .\" responsibility for errors or omissions, or for damages resulting from
17 .\" the use of the information contained herein.  The author(s) may not
18 .\" have taken the same level of care in the production of this manual,
19 .\" which is licensed free of charge, as they might when working
20 .\" professionally.
21 .\"
22 .\" Formatted or processed versions of this manual, if unaccompanied by
23 .\" the source, must acknowledge the copyright and authors of this work.
24 .\"
25 .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
26 .\" Translated 2006-07-16, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
27 .\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46
28 .\" Updated 2007-09-08, Akihiro MOTOKI, LDP v2.64
29 .\" Updated 2009-04-23, Akihiro MOTOKI, LDP v3.21
30 .\"
31 .\"WORD:        feature test macro      µ¡Ç½¸¡ºº¥Þ¥¯¥í
32 .\"WORD:        feature test macro requirements µ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
33 .\"
34 .TH FEATURE_TEST_MACROS 7 2010-09-10 "Linux" "Linux Programmer's Manual"
35 .SH Ì¾Á°
36 feature_test_macros \- µ¡Ç½¸¡ºº¥Þ¥¯¥í
37 .SH ½ñ¼°
38 .nf
39 .B #include <features.h>
40 .fi
41 .SH ÀâÌÀ
42 µ¡Ç½¸¡ºº¥Þ¥¯¥í (feature test macro) ¤Ë¤è¤ê¡¢¥×¥í¥°¥é¥Þ¤Ï
43 ¥×¥í¥°¥é¥à¤¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ëºÝ¤Ë¥·¥¹¥Æ¥à¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ë¤è¤ê
44 ¸ø³«¤µ¤ì¤ëÄêµÁ¤òÀ©¸æ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
45
46 .B Ãí°Õ:
47 µ¡Ç½¸¡ºº¥Þ¥¯¥í¤òµ¡Ç½¤µ¤»¤ë¤Ë¤Ï¡¢µ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÄêµÁ¤ò
48 ¡Ö¤É¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥¯¥ë¡¼¥É¤è¤ê¤âÁ°¤Ç¡×¹Ô¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
49 ¤³¤ì¤ò¼Â¸½¤¹¤ë¤Ë¤Ï¡¢
50 ¥³¥ó¥Ñ¥¤¥ë¥³¥Þ¥ó¥É¤Ç»ØÄꤹ¤ëÊýË¡
51 .RI ( "cc \-DMACRO=value" )
52 ¤È¡¢¥½¡¼¥¹¥³¡¼¥ÉÆâ¤ÇɬÍפʥޥ¯¥í¤ÎÄêµÁ¤ò
53 ¤É¤Î¥Ø¥Ã¥À¤Î¥¤¥ó¥¯¥ë¡¼¥É¤è¤ê¤âÁ°¤Ç¹Ô¤¦ÊýË¡¤¬¤¢¤ë¡£
54
55 µ¡Ç½¸¡ºº¥Þ¥¯¥í¤ò»È¤¦¤È¡¢Èóɸ½à¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤Ç¤­¡¢
56 °Ü¿¢À­¤Î¤¢¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òºîÀ®¤¹¤ë¤Î¤ËÌòΩ¤Ä¡£
57 ¾¤Î¥Þ¥¯¥í¤ò»È¤¦¤È¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¸ø³«¤µ¤ì¤Ê¤¤Èóɸ½à¤ÎÄêµÁ¤ò
58 ¸ø³«¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
59 °Ê²¼¤ÇÀâÌÀ¤¹¤ëµ¡Ç½¸¡ºº¥Þ¥¯¥í¤Î¤½¤ì¤¾¤ì¤ÎÀµ³Î¤Ê±Æ¶Á¤ò³Îǧ¤¹¤ë¤Ë¤Ï¡¢
60 ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë
61 .I <features.h>
62 ¤òÄ´¤Ù¤ì¤Ð¤è¤¤¡£
63
64 .SS ¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ç¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï¤Îµ¬Äê
65 ´Ø¿ô¤¬µ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÄêµÁ¤òɬÍפȤ¹¤ë¾ì¹ç¡¢
66 ¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Î½ñ¼° (SYNOPSIS) ¤ÎÀá¤Ë
67 °Ê²¼¤Î·Á¼°¤ÎÃí¼á¤òÆþ¤ì¤ë
68 (°Ê²¼¤ÎÎã¤Ï
69 .BR acct (2)
70 ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤«¤é¤Î°úÍѤǤ¢¤ë)¡£
71 .RS 8
72 .sp
73 .B #include <unistd.h>
74 .sp
75 .BI "int acct(const char *" filename );
76 .sp
77 .nf
78 .in -4n
79 glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
80 .RB ( feature_test_macros (7)
81 »²¾È):
82 .fi
83 .in
84 .sp
85 .BR acct ():
86 _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
87 .RE
88 .PP
89 \fB||\fP ¤Ï¡¢
90 .BR acct (2)
91 ¤ÎÄêµÁ¤ò
92 .I <unistd.h>
93 ¤«¤éÆÀ¤ë¤Ë¤Ï¡¢°Ê²¼¤Î¥Þ¥¯¥í¤ÎÄêµÁ¤Î¤¤¤º¤ì¤«¤ò¡¢¤É¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î
94 ¥¤¥ó¥¯¥ë¡¼¥É¤è¤ê¤âÁ°¤Ç¹Ô¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
95 .RS
96 .nf
97
98 #define _BSD_SOURCE
99 #define _XOPEN_SOURCE        /* or any value < 500 */
100 .fi
101 .RE
102 .PP
103 Ê̤ÎÊýË¡¤È¤·¤Æ¤Ï¡¢Åù²Á¤ÊÄêµÁ¤ò¥³¥ó¥Ñ¥¤¥ëÍѤΥ³¥Þ¥ó¥É¤Ç
104 »ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤ë¡£
105 .RS
106 .nf
107
108 cc \-D_BSD_SOURCE
109 cc \-D_XOPEN_SOURCE           # Or any value < 500
110 .fi
111 .RE
112 .PP
113 ¸å¤Ç½Ò¤Ù¤ë¤¬¡¢
114 .B ¡Ö¤¤¤¯¤Ä¤«¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤Ï¥Ç¥Õ¥©¥ë¥È¤ÇÄêµÁ¤µ¤ì¤ë¡×
115 ÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È¡£
116 ¤³¤Î¤¿¤á¡¢¡Ö½ñ¼°¡×¤Ëµ­ºÜ¤µ¤ì¤¿µ¡Ç½¸¡ºº¥Þ¥¯¥í¤ò¾ï¤Ë
117 ÌÀ¼¨Åª¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£
118
119 ¤¢¤Þ¤ê¿¤¯¤Ê¤¤¤¬¡¢¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ë¤è¤Ã¤Æ¤Ï¡¢
120 µ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï¤ò°Ê²¼¤Î¤è¤¦¤Ë´Êñ¤Êɽ¸½¤Çµ­ºÜ¤¹¤ë¾ì¹ç¤¬¤¢¤ë¡£
121 (°Ê²¼¤ÎÎã¤Ï
122 .BR readahead (2)
123 ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤«¤é¤Î°úÍѤǤ¢¤ë)¡£
124 .RS
125 .nf
126
127 .B #define _GNU_SOURCE
128 .B #include <fcntl.h>
129 .sp
130 .BI "ssize_t readahead(int " fd ", off64_t *" offset ", size_t " count );
131 .fi
132 .RE
133 .PP
134 ´Ø¿ôÄêµÁ¤Î¸ø³«¤Ë»È¤¨¤ëµ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬°ì¤Ä¤À¤±¤Ç¡¢
135 ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¤½¤Î¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤Ê¤¤¾ì¹ç¤Ë¡¢
136 ¤³¤Î·Á¼°¤Îɽ¸½¤òÍøÍѤ¹¤ë¡£
137 .SS glibc ¤¬²ò¼á¤¹¤ëµ¡Ç½¸¡ºº¥Þ¥¯¥í
138 °Ê²¼¤Ç¤Ï¡¢Linux glibc 2.\fIx\fP (\fIx\fP > 0) ¤Ë¤ª¤¤¤Æ¡¢
139 µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬¤É¤Î¤è¤¦¤Ë°·¤ï¤ì¤ë¤«¤òÀâÌÀ¤¹¤ë¡£
140 .\" The details in glibc 2.0 are simpler, but combining a
141 .\" a description of them with the details in later glibc versions
142 .\" would make for a complicated description.
143
144 Linux/glibc ¤Ï°Ê²¼¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ò²ò¼á¤¹¤ë:
145 .TP
146 .B __STRICT_ANSI__
147 ISO É¸½à¤Î C¡£
148 .BR gcc (1)
149 ¤ò
150 .I -std=c99
151 ¤ä
152 .I -ansi
153 ¤Ê¤É¤Î¥Õ¥é¥°¤òÉÕ¤±¤Æµ¯Æ°¤·¤¿¾ì¹ç¡¢
154 ¤³¤Î¥Þ¥¯¥í¤Ï°ÅÌۤΤ¦¤Á¤ËÄêµÁ¤µ¤ì¤ë¡£
155 .TP
156 .B _POSIX_C_SOURCE
157 ¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç
158 °Ê²¼¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
159 .RS
160 .IP \(bu 3
161 Ãͤ¬ 1 ¤Î¾ì¹ç¡¢POSIX.1-1990 ¤È ISO C (1990) ¤Ë½àµò¤¹¤ëÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
162 .IP \(bu
163 Ãͤ¬ 2 °Ê¾å¤Î¾ì¹ç¡¢
164 POSIX.2-1992 ´ØÏ¢¤ÎÄêµÁ¤âÄɲäǸø³«¤µ¤ì¤ë¡£
165 .IP \(bu
166 Ãͤ¬ 199309 °Ê¾å¤Î¾ì¹ç¡¢
167 POSIX.1b (¥ê¥¢¥ë¥¿¥¤¥à³ÈÄ¥) ´ØÏ¢¤ÎÄêµÁ¤¬ÄɲäǸø³«¤µ¤ì¤ë¡£
168 .\" 199506L functionality is only available since glibc 2.1
169 .IP \(bu
170 Ãͤ¬ 199506 °Ê¾å¤Î¾ì¹ç¡¢
171 POSIX.1c (¥¹¥ì¥Ã¥É) ´ØÏ¢¤ÎÄêµÁ¤¬ÄɲäǸø³«¤µ¤ì¤ë¡£
172 .IP \(bu
173 (glibc 2.3.3 °Ê¹ß)
174 Ãͤ¬ 200112L °Ê¾å¤Î¾ì¹ç¡¢
175 (XSI ³ÈÄ¥¤ò½ü¤¯) POSIX.1-2001 ´ðËÜ»ÅÍͤËÂбþ¤¹¤ëÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
176 .IP \(bu
177 (glibc 2.10 °Ê¹ß)
178 Ãͤ¬ 200809L °Ê¾å¤Î¾ì¹ç¡¢
179 (XSI ³ÈÄ¥¤ò½ü¤¯) POSIX.1-2008 ´ðËÜ»ÅÍͤËÂбþ¤¹¤ëÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
180 .RE
181 .TP
182 .B _POSIX_SOURCE
183 ¤³¤Î¥Þ¥¯¥í¤ÏÇÑ»ßͽÄê¤Ç¤¢¤ë¡£
184 ¤³¤Î¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤ë¤È¡¢Ãͤ˴ؤï¤é¤º¡¢
185 .B _POSIX_C_SOURCE
186 ¤òÃÍ 1 ¤ÇÄêµÁ¤¹¤ë¤Î¤ÈÅù²Á¤È¤Ê¤ë¡£
187 .TP
188 .B _XOPEN_SOURCE
189 ¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç°Ê²¼¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
190 .RS
191 .IP \(bu 3
192 ¤É¤ó¤ÊÃͤǤ⡢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç
193 POSIX.1, POSIX.2, XPG4 ¤Ë½àµò¤¹¤ëÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
194 .IP \(bu
195 Ãͤ¬ 500 °Ê¾å¤Î¾ì¹ç¡¢
196 SUSv2 (UNIX 98) ´ØÏ¢¤ÎÄêµÁ¤¬ÄɲäǸø³«¤µ¤ì¤ë¡£
197 .IP \(bu
198 (glibc 2.2 °Ê¹ß)
199 Ãͤ¬ 600 °Ê¾å¤Î¾ì¹ç¡¢
200 SUSv3 (UNIX 03; POSIX.1-2001 ´ðËÜ»ÅÍÍ + XSI ³ÈÄ¥¤ÈƱ¤¸)
201 ´ØÏ¢¤ÎÄêµÁ¤È C99 ¤Ç¤ÎÄêµÁ¤¬ÄɲäǸø³«¤µ¤ì¤ë¡£
202 .IP \(bu
203 (glibc 2.10 °Ê¹ß)
204 Ãͤ¬ 700 °Ê¾å¤Î¾ì¹ç¡¢
205 SUSv4 (POSIX.1-2008 ´ðËÜ»ÅÍÍ + XSI ³ÈÄ¥¤ÈƱ¤¸)
206 ´ØÏ¢¤ÎÄêµÁ¤¬ÄɲäǸø³«¤µ¤ì¤ë¡£
207 .RE
208 .TP
209 .B _XOPEN_SOURCE_EXTENDED
210 ¤³¤Î¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¡¢¤µ¤é¤Ë
211 .B _XOPEN_SOURCE
212 ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤È¡¢XPG4v2 (SUSv1) UNIX ³ÈÄ¥ (UNIX 95)
213 ¤ËÂбþ¤¹¤ëÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
214 .B _XOPEN_SOURCE
215 ¤¬ 500 °Ê¾å¤ÎÃͤÇÄêµÁ¤µ¤ì¤¿¾ì¹ç¡¢¤³¤Î¥Þ¥¯¥í¤Ï°ÅÌۤΤ¦¤Á¤ËÄêµÁ¤µ¤ì¤ë¡£
216 .TP
217 .B _ISOC99_SOURCE
218 ISO C (1990) ¤Î C99 ³ÈÄ¥¤ò¸ø³«¤¹¤ë¡£
219 ¤³¤Î¥Þ¥¯¥í¤Ï glibc 2.1.3 °Ê¹ß¤Çǧ¼±¤µ¤ì¤ë¡£
220 ½é´ü¤Î¥Ð¡¼¥¸¥ç¥ó 2.1.x ¤Î glibc ¤Ç¤Ï¡¢¤³¤ì¤ÈÅù²Á¤Ê
221 .B _ISOC9X_SOURCE
222 ¤È¤¤¤¦Ì¾Á°¤Î¥Þ¥¯¥í¤¬»È¤ï¤ì¤Æ¤¤¤¿
223 (¤Ê¤¼¤Ê¤é¡¢C99 É¸½à¤Ï¤Þ¤À³ÎÄꤷ¤Æ¤¤¤Ê¤«¤Ã¤¿¤«¤é¤Ç¤¢¤ë)¡£
224 .B _ISOC9X_SOURCE
225 ¥Þ¥¯¥í¤Î»ÈÍѤÏÇѻߤµ¤ì¤Æ¤¤¤ë¤¬¡¢
226 glibc ¤Ï²áµî¤È¤Î¸ß´¹À­¤Î¤¿¤áº£¤Ç¤â¤³¤Î¥Þ¥¯¥í¤òǧ¼±¤¹¤ë¡£
227 .TP
228 .B _LARGEFILE64_SOURCE
229 LFS (Large File Summit) ¤Ë¤è¤ê
230 "»ÃÄê³ÈÄ¥ (transitional extension)" Single UNIX Specification
231 ¤È¤·¤Æµ¬Äꤵ¤ì¤¿ÂåÂØ API (alternative API) ¤Ë´Ø¤¹¤ëÄêµÁ¤ò¸ø³«¤¹¤ë
232 (http://opengroup.org/platform/lfs.html »²¾È)¡£
233 ÂåÂØ API ¤Ï¿·µ¬¥ª¥Ö¥¸¥§¥¯¥È (´Ø¿ô¤È·¿) ¤Î½¸¹ç¤Ç¹½À®¤µ¤ì¡¢
234 ¤½¤Î̾Á°¤Ï "64" ¤Ç½ª¤ï¤ë (Î㤨¤Ð¡¢
235 .I off_t
236 ¤ËÂбþ¤¹¤ë¤Î¤Ï
237 .IR off64_t ¡¢
238 .BR lseek ()
239 ¤ËÂбþ¤¹¤ë¤Î¤Ï
240 .BR lseek64 ()
241 ¤Ç¤¢¤ë)¡£
242 ¿·¤·¤¤¥×¥í¥°¥é¥à¤Ç¤Ï¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÍøÍѤ·¤Ê¤¤¤³¤È¡£
243 Âå¤ï¤ê¤Ë
244 .I _FILE_OFFSET_BITS=64
245 ¤òÍøÍѤ¹¤ë¤³¤È¡£
246 .TP
247 .B _FILE_OFFSET_BITS
248 ¤³¤Î¥Þ¥¯¥í¤òÃÍ 64 ¤ÇÄêµÁ¤¹¤ë¤È¡¢¥Õ¥¡¥¤¥ë I/O ¤È¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÁàºî¤Ë
249 ´ØÏ¢¤¹¤ë 32 ¥Ó¥Ã¥ÈÈǤδؿô¤È¥Ç¡¼¥¿¥¿¥¤¥×¤Ï¼«Æ°Åª¤Ë 64 ¥Ó¥Ã¥ÈÈǤË
250 ÊÑ´¹¤µ¤ì¤ë¡£
251 ¤³¤ì¤Ï¡¢32 ¥Ó¥Ã¥È¥·¥¹¥Æ¥à¤ÇÂ礭¤Ê¥Õ¥¡¥¤¥ë (> 2 ¥®¥¬¥Ð¥¤¥È) ¤Î I/O
252 ¤ò¼Â¹Ô¤¹¤ëºÝ¤ËÌòΩ¤Ä
253 (¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢¥³¥ó¥Ñ¥¤¥ë¤·Ä¾¤¹¤À¤±¤ÇÂ礭¤Ê¥Õ¥¡¥¤¥ë¤ò
254 °·¤¨¤ë¥×¥í¥°¥é¥à¤ò½ñ¤¯¤³¤È¤¬¤Ç¤­¤ë)¡£
255 64 ¥Ó¥Ã¥È¥·¥¹¥Æ¥à¤Ï¡¢¤â¤È¤â¤È 2 ¥®¥¬¥Ð¥¤¥È¤è¤êÂ礭¤Ê¥Õ¥¡¥¤¥ë¤ò
256 °·¤¨¤ë¤Î¤Ç¡¢64 ¥Ó¥Ã¥È¥·¥¹¥Æ¥à¤Ç¤Ï¤³¤Î¥Þ¥¯¥í¤Ï¸ú²Ì¤ò»ý¤¿¤Ê¤¤¡£
257 .TP
258 .B _BSD_SOURCE
259 ¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È (Ãͤ˴ؤï¤é¤º) ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç
260 BSD Í³Íè¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
261 ¤Þ¤¿¡¢¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢ÁêÍƤì¤Ê¤¤É¸½à¤¬Â¸ºß¤¹¤ë¾õ¶·¤Ë¤ª¤¤¤Æ
262 BSD Í³Íè¤ÎÄêµÁ¤òÍ¥À褹¤ë¤è¤¦¤Ë¤Ê¤ë¡£
263 ¤¿¤À¤·¡¢
264 .BR _SVID_SOURCE ,
265 .BR _POSIX_SOURCE ,
266 .BR _POSIX_C_SOURCE ,
267 .BR _XOPEN_SOURCE ,
268 .BR _XOPEN_SOURCE_EXTENDED ,
269 .B _GNU_SOURCE
270 ¤¬°ì¤Ä¤Ç¤âÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢BSD Í³Íè¤ÎÄêµÁ¤ÏÍ¥À褵¤ì¤Ê¤¯¤Ê¤ë¡£
271 .TP
272 .B _SVID_SOURCE
273 ¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È (Ãͤ˴ؤï¤é¤º) ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç
274 System V Í³Íè¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤ë
275 (SVID == System V Interface Definition;
276 .BR standards (7)
277 »²¾È)¡£
278 .TP
279 .BR _ATFILE_SOURCE " (glibc 2.4 °Ê¹ß)"
280 ¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È (Ãͤ˴ؤï¤é¤º) ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç
281 ̾Á°¤ÎËöÈø¤¬ "at" ¤Î³Æ¼ï¤Î´Ø¿ô¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
282 .BR openat (2)
283 »²¾È¡£
284 glibc 2.10 °Ê¹ß¤Ç¤Ï¡¢
285 .B _POSIX_C_SOURCE
286 ¤¬ 200809L °Ê¾å¤ÎÃͤÇÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢
287 ¤³¤Î¥Þ¥¯¥í¤â°ÅÌۤΤ¦¤Á¤ËÄêµÁ¤µ¤ì¤ë¡£
288 .TP
289 .B _GNU_SOURCE
290 ¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È (Ãͤ˴ؤï¤é¤º) °Ê²¼¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤Î¤È
291 Åù²Á¤Ë¤Ê¤ë:
292 .BR _BSD_SOURCE ,
293 .BR _SVID_SOURCE ,
294 .BR _ATFILE_SOURCE ,
295 .BR _LARGEFILE64_SOURCE ,
296 .BR _ISOC99_SOURCE ,
297 .BR _XOPEN_SOURCE_EXTENDED ,
298 .BR _POSIX_SOURCE ,
299 ÃÍ 200809L ¤Î
300 .B _POSIX_C_SOURCE
301 (¥Ð¡¼¥¸¥ç¥ó 2.10 ¤è¤êÁ°¤Î glibc ¤Ç¤ÏÃͤϠ200112L¡¢
302 ¥Ð¡¼¥¸¥ç¥ó 2.5 ¤è¤êÁ°¤Î glibc ¤Ç¤ÏÃͤϠ199506L¡¢
303 ¥Ð¡¼¥¸¥ç¥ó 2.1 ¤è¤êÁ°¤Î glibc ¤Ç¤ÏÃͤϠ199309L),
304 ÃÍ 700 ¤Î
305 .B _XOPEN_SOURCE
306 (¥Ð¡¼¥¸¥ç¥ó 2.10 ¤è¤êÁ°¤Î glibc ¤Ç¤ÏÃͤϠ600¡¢
307 ¥Ð¡¼¥¸¥ç¥ó 2.2 ¤è¤êÁ°¤Î glibc ¤Ç¤ÏÃͤϠ500)¡£
308 ¤µ¤é¤Ë¡¢³Æ¼ï¤Î GNU ¸ÇÍ­¤Î³ÈÄ¥¤â¸ø³«¤µ¤ì¤ë¡£
309 »ØÄꤵ¤ì¤¿É¸½à¤ËÌ·½â¤¬¤¢¤Ã¤¿¾ì¹ç¤Ï¡¢
310 BSD Í³Íè¤ÎÄêµÁ¤¬Í¥À褵¤ì¤Ê¤¯¤Ê¤ë¡£
311 .TP
312 .B _REENTRANT
313 ¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢¤¤¤¯¤Ä¤«¤Î¥ê¥¨¥ó¥È¥é¥ó¥È (ºÆÆþ²Äǽ) ¤Ê´Ø¿ô
314 ÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¡¦¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¤³¤ÎÂå¤ï¤ê¤Ë
315 .I "cc\ \-pthread"
316 ¤ò»ÈÍѤ¹¤ë¤³¤È¡£
317 .TP
318 .B _THREAD_SAFE
319 .B _REENTRANT
320 ¤ÎƱµÁ¸ì¡£
321 ¾¤Î¤¤¤¯¤Ä¤«¤Î¼ÂÁõ¤È¤Î¸ß´¹À­¤òÄ󶡤¹¤ë¤¿¤á¤Î¤â¤Î¡£
322 .TP
323 .BR _FORTIFY_SOURCE " (glibc 2.3.4 °Ê¹ß)"
324 .\" For more detail, see:
325 .\" http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
326 .\" [PATCH] Object size checking to prevent (some) buffer overflows
327 .\" * From: Jakub Jelinek <jakub at redhat dot com>
328 .\" * To: gcc-patches at gcc dot gnu dot org
329 .\" * Date: Tue, 21 Sep 2004 04:16:40 -0400
330 ¤³¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤È¡¢Ê¸»úÎó¤ä¥á¥â¥ê¤ÎÁàºî¤ò¹Ô¤¦ÍÍ¡¹¤Ê´Ø¿ô¤ò
331 »ÈÍѤ¹¤ëºÝ¤Ë¥Ð¥Ã¥Õ¥¡¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤ò¸¡½Ð¤¹¤ë¤¿¤á¤Î·Ú¤á¤Î¥Á¥§¥Ã¥¯¤¬
332 ¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£¤¹¤Ù¤Æ¤Î¥Ð¥Ã¥Õ¥¡¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¬¸¡½Ð¤µ¤ì¤ë
333 ¤ï¤±¤Ç¤Ï¤Ê¤¯¡¢¤¢¤¯¤Þ¤Ç¤è¤¯¤¢¤ëÎã¤Ë¤Ä¤¤¤Æ¤À¤±¤Ç¤¢¤ë¡£
334 ¸½ºß¤Î¼ÂÁõ¤Ç¤Ï¡¢°Ê²¼¤Î´Ø¿ô¤Ë¥Á¥§¥Ã¥¯¤¬Äɲ䵤ì¤Æ¤¤¤ë:
335 .BR memcpy (3),
336 .BR mempcpy (3),
337 .BR memmove (3),
338 .BR memset (3),
339 .BR stpcpy (3),
340 .BR strcpy (3),
341 .BR strncpy (3),
342 .BR strcat (3),
343 .BR strncat (3),
344 .BR sprintf (3),
345 .BR snprintf (3),
346 .BR vsprintf (3),
347 .BR vsnprintf (3),
348 .BR gets (3).
349 .B _FORTIFY_SOURCE
350 ¤¬ 1 ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¥³¥ó¥Ñ¥¤¥é¤ÎºÇŬ²½¥ì¥Ù¥ë¤¬ 1
351 .RI ( "gcc\ \-O1" )
352 ¤«¤½¤ì°Ê¾å¤Ç¤¢¤ì¤Ð¡¢µ¬³Ê¤Ë½àµò¤¹¤ë¥×¥í¥°¥é¥à¤Î¿¶¤ëÉñ¤¤¤ò
353 ÊѲ½¤µ¤»¤Ê¤¤¤è¤¦¤Ê¥Á¥§¥Ã¥¯¤¬¼Â¹Ô¤µ¤ì¤ë¡£
354 .B _FORTIFY_SOURCE
355 ¤¬ 2 ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢¤µ¤é¤Ê¤ë¥Á¥§¥Ã¥¯¤¬Äɲ䵤ì¤ë¤¬¡¢
356 µ¬³Ê¤Ë½àµò¤¹¤ë¥×¥í¥°¥é¥à¤Î¤¤¤¯¤Ä¤«¤¬¼ºÇÔ¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¡£
357 ¤¤¤¯¤Ä¤«¤Î¥Á¥§¥Ã¥¯¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¼Â¹Ô¤Ç¤­¡¢¥³¥ó¥Ñ¥¤¥é¤Î·Ù¹ð¤È¤·¤Æ
358 ɽ¼¨¤µ¤ì¤ë¡£Â¾¤Î¥Á¥§¥Ã¥¯¤Ï¼Â¹Ô»þ¤Ë¹Ô¤ï¤ì¡¢¥Á¥§¥Ã¥¯¤Ë¼ºÇÔ¤·¤¿¾ì¹ç
359 ¤Ë¤Ï¼Â¹Ô»þ¥¨¥é¡¼¤È¤Ê¤ë¡£
360 ¤³¤Î¥Þ¥¯¥í¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¥³¥ó¥Ñ¥¤¥é¤ÎÂбþ¤¬É¬ÍפǤ¢¤ê¡¢
361 ¥Ð¡¼¥¸¥ç¥ó 4.0 °Ê¹ß¤Î
362 .BR gcc (1)
363 ¤ÇÍøÍѤǤ­¤ë¡£
364 .SS ¥Ç¥Õ¥©¥ë¥È¤ÎÄêµÁ¡¢°ÅÌÛ¤ÎÄêµÁ¡¢ÁȤ߹ç¤ï¤»ÄêµÁ
365 .PP
366 µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬°ì¤Ä¤âÌÀ¼¨Åª¤ËÄêµÁ¤µ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¡¢
367 ¥Ç¥Õ¥©¥ë¥È¤Çµ¡Ç½¸¡ºº¥Þ¥¯¥í
368 .BR _BSD_SOURCE ,
369 .BR _SVID_SOURCE ,
370 .BR _POSIX_SOURCE ,
371 .BR _POSIX_C_SOURCE =200809L
372 ¤¬ÄêµÁ¤µ¤ì¤ë
373 (¥Ð¡¼¥¸¥ç¥ó 2.10 ¤è¤êÁ°¤Î glibc ¤Ç¤ÏÃͤϠ200112L¡¢
374 ¥Ð¡¼¥¸¥ç¥ó 2.4 ¤è¤êÁ°¤Î glibc ¤Ç¤ÏÃͤϠ199506L¡¢
375 ¥Ð¡¼¥¸¥ç¥ó 2.1 ¤è¤êÁ°¤Î glibc ¤Ç¤ÏÃͤϠ199309L)¡£
376 .PP
377 .BR __STRICT_ANSI__ ,
378 .BR _ISOC99_SOURCE ,
379 .BR _POSIX_SOURCE ,
380 .BR _POSIX_C_SOURCE  ,
381 .BR _XOPEN_SOURCE ,
382 .BR _XOPEN_SOURCE_EXTENDED ,
383 .BR _BSD_SOURCE ,
384 .B _SVID_SOURCE
385 ¤Î¤¤¤º¤ì¤«¤¬ÌÀ¼¨Åª¤ËÄêµÁ¤µ¤ì¤¿¾ì¹ç¡¢
386 .B _BSD_SOURCE
387 ¤È
388 .B _SVID_SOURCE
389 ¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏÄêµÁ¤µ¤ì¤Ê¤¤¡£
390
391 .B _POSIX_SOURCE
392 ¤È
393 .B _POSIX_C_SOURCE
394 ¤¬ÌÀ¼¨Åª¤ËÄêµÁ¤µ¤ì¤Ê¤¤¾ì¹ç¤Ç¡¢
395 .B __STRICT_ANSI__
396 ¤¬ÄêµÁ¤µ¤ì¤Ê¤¤¡¢¤â¤·¤¯¤Ï
397 .B _XOPEN_SOURCE
398 ¤¬ 500 °Ê¾å¤ÎÃͤÇÄêµÁ¤µ¤ì¤¿¤È¤­¤Ë¤Ï¡¢
399 .RS 3
400 .IP * 3
401 .B _POSIX_SOURCE
402 ¤¬ÃÍ 1 ¤ÇÄêµÁ¤µ¤ì¡¢¤«¤Ä
403 .IP *
404 .B _POSIX_C_SOURCE
405 ¤Ï°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«°ì¤Ä¤ÇÄêµÁ¤µ¤ì¤ë¡£
406 .RS 6
407 .IP \(bu 3
408 2
409 .RB ( _XOPEN_SOURCE
410 ¤¬ 500 Ì¤Ëþ¤ÎÃͤÇÄêµÁ¤µ¤ì¤¿¾ì¹ç)
411 .IP \(bu
412 199506L
413 .RB ( _XOPEN_SOURCE
414 ¤¬ 500 °Ê¾å 600 Ì¤Ëþ¤ÎÃͤÇÄêµÁ¤µ¤ì¤¿¾ì¹ç)
415 .IP \(bu
416 (glibc 2.4 °Ê¹ß)
417 200112L
418 .RB ( XOPEN_SOURCE
419 ¤¬ 600 °Ê¾å 700 Ì¤Ëþ¤ÎÃͤÇÄêµÁ¤µ¤ì¤¿¾ì¹ç)
420 .IP \(bu
421 (glibc 2.10 °Ê¹ß)
422 200809L
423 .RB ( XOPEN_SOURCE
424 ¤¬ 700 °Ê¾å¤ÎÃͤÇÄêµÁ¤µ¤ì¤¿¾ì¹ç)
425 .IP \(bu
426 ¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Î glibc ¤Ç¤Ï
427 .B _POSIX_C_SOURCE
428 ¤ÎÃͤȤ·¤Æ 200112L ¤ä 200809L ¤Ï¸ºß¤»¤º¡¢
429 .B _POSIX_C_SOURCE
430 ¤ÎÃͤ¬¤É¤¦¤Ê¤ë¤«¤Ï glibc ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤è¤ê°Û¤Ê¤ë¡£
431 .IP \(bu
432 .B _XOPEN_SOURCE
433 ¤¬Ì¤ÄêµÁ¤Î¾ì¹ç¡¢
434 .B _POSIX_C_SOURCE
435 ¤ÎÃͤϠglibc ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤è¤ê°Û¤Ê¤ë¡£
436 ¥Ð¡¼¥¸¥ç¥ó 2.4 ¤è¤êÁ°¤Î glibc ¤Ç¤Ï 199506L¡¢
437 ¥Ð¡¼¥¸¥ç¥ó 2.4 °Ê¹ß 2.9 Ì¤Ëþ¤Ç¤Ï 200112L¡¢
438 glibc 2.10 °Ê¹ß¤Ç¤Ï 200809L ¤È¤Ê¤ë¡£
439 .RE
440 .RE
441 .PP
442 ¤Þ¤¿¡¢Ê£¿ô¤Î¥Þ¥¯¥í¤òÄêµÁ¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£
443 ¤³¤Î¾ì¹ç¡¢ÄêµÁ¤·¤¿¥Þ¥¯¥í¤Ï¤¹¤Ù¤ÆÍ­¸ú¤Ë¤Ê¤ë¡£
444 .SH ½àµò
445 POSIX.1 ¤Ç¤Ï
446 .BR _POSIX_C_SOURCE ,
447 .BR _POSIX_SOURCE ,
448 .B _XOPEN_SOURCE
449 ¤¬µ¬Äꤵ¤ì¤Æ¤¤¤ë¡£
450 .B _XOPEN_SOURCE_EXTENDED
451 ¤Ï XPG4v2 (ÊÌ̾ SUSv1) ¤Çµ¬Äꤵ¤ì¤Æ¤¤¤¿¡£
452
453 .B _FILE_OFFSET_BITS
454 ¤Ï¤É¤Îɸ½à¤Ç¤âµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¤¬¡¢
455 ¾¤Î¤¤¤¯¤Ä¤«¤Î¼ÂÁõ¤ÇºÎÍѤµ¤ì¤Æ¤¤¤ë¡£
456
457 .BR _BSD_SOURCE ,
458 .BR _SVID_SOURCE ,
459 .BR _ATFILE_SOURCE ,
460 .BR _GNU_SOURCE ,
461 .BR _FORTIFY_SOURCE ,
462 .BR _REENTRANT ,
463 .B _THREAD_SAFE
464 ¤Ï Linux (glibc) ¸ÇÍ­¤Ç¤¢¤ë¡£
465 .SH Ãí°Õ
466 .I <features.h>
467 ¤Ï Linux/glibc ¸ÇÍ­¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¡£
468 ¾¤Î¥·¥¹¥Æ¥à¤Ë¤âƱÍͤÎÌÜŪ¤Î¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¤¬¡¢ÉáÄ̤ϰ㤦̾Á°¤Ç¤¢¤ë¡£
469 ¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ï¡¢Â¾¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ë¤è¤êɬÍפ˱þ¤¸¤Æ
470 ¼«Æ°Åª¤Ë¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ë¡£µ¡Ç½¸¡ºº¥Þ¥¯¥í¤òÍøÍѤ¹¤ë¤¿¤á¤Ë
471 ÌÀ¼¨Åª¤Ë¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ëɬÍפϤʤ¤¡£
472
473 ¾åµ­¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤Î¤¦¤Á¤É¤ì¤¬ÄêµÁ¤µ¤ì¤¿¤«¤Ë¤·¤¿¤¬¤Ã¤Æ¡¢
474 .I <features.h>
475 ¤Ï¡¢Â¾¤Î glibc ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç¥Á¥§¥Ã¥¯¤µ¤ì¤ë³Æ¼ï¤Î¾¤Î¥Þ¥¯¥í¤ò¡¢
476 ÆâÉô¤ÇÄêµÁ¤¹¤ë¡£¤³¤ì¤é¤Î¥Þ¥¯¥í¤Î̾Á°¤Ï¥¢¥ó¥À¡¼¥¹¥³¥¢ 2¤Ä¤Ç»Ï¤Þ¤ë
477 (Î㤨¤Ð
478 .BR __USE_MISC )¡£
479 ¥æ¡¼¥¶¥×¥í¥°¥é¥à¤Ï¤³¤ì¤é¤Î¥Þ¥¯¥í¤ò \fI·è¤·¤Æ\fP Ä¾ÀÜÄêµÁ¤¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
480 Âå¤ï¤ê¤Ë¡¢¾åµ­¤Î¥ê¥¹¥È¤Ë¤¢¤ëŬÀڤʵ¡Ç½¸¡ºº¥Þ¥¯¥í¤òÍøÍѤ¹¤Ù¤­¤Ç¤¢¤ë¡£
481 .SH Îã
482 ²¼µ­¤Î¥×¥í¥°¥é¥à¤ò»È¤¦¤È¡¢³Æ¼ï¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ glibc ¤Î¥Ð¡¼¥¸¥ç¥ó
483 ¤Ë±þ¤¸¤Æ¤É¤Î¤è¤¦¤ËÀßÄꤵ¤ì¤ë¤«¤ä¡¢¤É¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ÌÀ¼¨Åª¤Ë
484 ÀßÄꤵ¤ì¤ë¤«¡¢¤òÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
485 °Ê²¼¤Ë¼¨¤¹¥·¥§¥ë¡¦¥»¥Ã¥·¥ç¥ó¤Ï¡¢
486 glibc 2.10 ¤Î¥·¥¹¥Æ¥à¤Ç¤Î¼Â¹Ô·ë²Ì¤ÎÎã¤Ç¤¢¤ë¡£
487 .in +4n
488 .nf
489
490 $ \fBcc ftm.c\fP
491 $ \fB./a.out\fP
492 _POSIX_SOURCE defined
493 _POSIX_C_SOURCE defined: 200809L
494 _BSD_SOURCE defined
495 _SVID_SOURCE defined
496 _ATFILE_SOURCE defined
497 $ \fBcc -D_XOPEN_SOURCE=500 ftm.c\fP
498 $ \fB./a.out\fP
499 _POSIX_SOURCE defined
500 _POSIX_C_SOURCE defined: 199506L
501 _XOPEN_SOURCE defined: 500
502 $ \fBcc -D_GNU_SOURCE ftm.c\fP
503 $ \fB./a.out\fP
504 _POSIX_SOURCE defined
505 _POSIX_C_SOURCE defined: 200809L
506 _ISOC99_SOURCE defined
507 _XOPEN_SOURCE defined: 700
508 _XOPEN_SOURCE_EXTENDED defined
509 _LARGEFILE64_SOURCE defined
510 _BSD_SOURCE defined
511 _SVID_SOURCE defined
512 _ATFILE_SOURCE defined
513 _GNU_SOURCE defined
514 .fi
515 .in
516 .SS Program source
517 \&
518 .nf
519 /* ftm.c */
520
521 #include <stdio.h>
522 #include <unistd.h>
523 #include <stdlib.h>
524
525 int
526 main(int argc, char *argv[])
527 {
528 #ifdef _POSIX_SOURCE
529     printf("_POSIX_SOURCE defined\\n");
530 #endif
531
532 #ifdef _POSIX_C_SOURCE
533     printf("_POSIX_C_SOURCE defined: %ldL\\n", (long) _POSIX_C_SOURCE);
534 #endif
535
536 #ifdef _ISOC99_SOURCE
537     printf("_ISOC99_SOURCE defined\\n");
538 #endif
539
540 #ifdef _XOPEN_SOURCE
541     printf("_XOPEN_SOURCE defined: %d\\n", _XOPEN_SOURCE);
542 #endif
543
544 #ifdef _XOPEN_SOURCE_EXTENDED
545     printf("_XOPEN_SOURCE_EXTENDED defined\\n");
546 #endif
547
548 #ifdef _LARGEFILE64_SOURCE
549     printf("_LARGEFILE64_SOURCE defined\\n");
550 #endif
551
552 #ifdef _FILE_OFFSET_BITS
553     printf("_FILE_OFFSET_BITS defined: %d\\n", _FILE_OFFSET_BITS);
554 #endif
555
556 #ifdef _BSD_SOURCE
557     printf("_BSD_SOURCE defined\\n");
558 #endif
559
560 #ifdef _SVID_SOURCE
561     printf("_SVID_SOURCE defined\\n");
562 #endif
563
564 #ifdef _ATFILE_SOURCE
565     printf("_ATFILE_SOURCE defined\\n");
566 #endif
567
568 #ifdef _GNU_SOURCE
569     printf("_GNU_SOURCE defined\\n");
570 #endif
571
572 #ifdef _REENTRANT
573     printf("_REENTRANT defined\\n");
574 #endif
575
576 #ifdef _THREAD_SAFE
577     printf("_THREAD_SAFE defined\\n");
578 #endif
579
580 #ifdef _FORTIFY_SOURCE
581     printf("_FORTIFY_SOURCE defined\\n");
582 #endif
583
584     exit(EXIT_SUCCESS);
585 }
586 .fi
587 .SH ´ØÏ¢¹àÌÜ
588 .BR libc (7),
589 .BR standards (7)
590 .sp
591 .I "info libc"
592 ¤Î "Feature Test Macros" ¤ÎÀá¡£
593 .\" But beware: the info libc document is out of date (Jul 07, mtk)
594 .sp
595 .I /usr/include/features.h