#, fuzzy msgid "" msgstr "" "Project-Id-Version: man-pages-l10n VERSION\n" "POT-Creation-Date: 2014-07-17 17:57+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: man-pages/man7/feature_test_macros.7:25 #, no-wrap msgid "FEATURE_TEST_MACROS" msgstr "" #. type: TH #: man-pages/man7/feature_test_macros.7:25 #, no-wrap msgid "2014-03-20" msgstr "" #. type: TH #: man-pages/man7/feature_test_macros.7:25 #, no-wrap msgid "Linux" msgstr "" #. type: TH #: man-pages/man7/feature_test_macros.7:25 #, no-wrap msgid "Linux Programmer's Manual" msgstr "" #. type: SH #: man-pages/man7/feature_test_macros.7:26 #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:28 msgid "feature_test_macros - feature test macros" msgstr "" #. type: SH #: man-pages/man7/feature_test_macros.7:28 #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:31 #, no-wrap msgid "B<#include Efeatures.hE>\n" msgstr "" #. type: SH #: man-pages/man7/feature_test_macros.7:32 #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:35 msgid "" "Feature test macros allow the programmer to control the definitions that are " "exposed by system header files when a program is compiled." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:43 msgid "" "B In order to be effective, a feature test macro I. This can be done either in the " "compilation command (I) or by defining the macro within " "the source code before including any headers." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:52 msgid "" "Some feature test macros are useful for creating portable applications, by " "preventing nonstandard definitions from being exposed. Other macros can be " "used to expose nonstandard definitions that are not exposed by default. The " "precise effects of each of the feature test macros described below can be " "ascertained by inspecting the Ifeatures.hE> header file." msgstr "" #. type: SS #: man-pages/man7/feature_test_macros.7:52 #, no-wrap msgid "Specification of feature test macro requirements in manual pages" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:58 msgid "" "When a function requires that a feature test macro is defined, the manual " "page SYNOPSIS typically includes a note of the following form (this example " "from the B(2) manual page):" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:61 msgid "B<#include Eunistd.hE>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:63 msgid "BIB<);>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:68 #, no-wrap msgid "" "Feature Test Macro Requirements for glibc (see\n" "B(7)):\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:73 msgid "B(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\\ E\\ 500)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:84 msgid "" "The B<||> means that in order to obtain the declaration of B(2) from " "Iunistd.hE>, I of the following macro definitions must be " "made before including any header files:" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:89 #, no-wrap msgid "" "#define _BSD_SOURCE\n" "#define _XOPEN_SOURCE /* or any value E 500 */\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:94 msgid "" "Alternatively, equivalent definitions can be included in the compilation " "command:" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:99 #, no-wrap msgid "" "cc -D_BSD_SOURCE\n" "cc -D_XOPEN_SOURCE # Or any value E 500\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:107 msgid "" "Note that, as described below, B, so that it may not always be necessary to explicitly specify the " "feature test macro(s) shown in the SYNOPSIS." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:111 msgid "" "In a few cases, manual pages use a shorthand for expressing the feature test " "macro requirements (this example from B(2)):" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:116 #, no-wrap msgid "B<#define _GNU_SOURCE>\n" "B<#include Efcntl.hE>\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:118 #, no-wrap msgid "" "BIB<, off64_t *>IB<, size_t " ">IB<);>\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:124 msgid "" "This format is employed in cases where only a single feature test macro can " "be used to expose the function declaration, and that macro is not defined by " "default." msgstr "" #. type: SS #: man-pages/man7/feature_test_macros.7:124 #, no-wrap msgid "Feature test macros understood by glibc" msgstr "" #. The details in glibc 2.0 are simpler, but combining a #. a description of them with the details in later glibc versions #. would make for a complicated description. #. type: Plain text #: man-pages/man7/feature_test_macros.7:132 msgid "" "The following paragraphs explain how feature test macros are handled in " "Linux glibc 2.I, I E 0." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:134 msgid "Linux glibc understands the following feature test macros:" msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:134 #, no-wrap msgid "B<__STRICT_ANSI__>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:144 msgid "" "ISO Standard C. This macro is implicitly defined by B(1) when invoked " "with, for example, the I<-std=c99> or I<-ansi> flag." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:144 #, no-wrap msgid "B<_POSIX_C_SOURCE>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:147 man-pages/man7/feature_test_macros.7:180 msgid "" "Defining this macro causes header files to expose definitions as follows:" msgstr "" #. type: IP #: man-pages/man7/feature_test_macros.7:148 man-pages/man7/feature_test_macros.7:151 man-pages/man7/feature_test_macros.7:154 man-pages/man7/feature_test_macros.7:158 man-pages/man7/feature_test_macros.7:161 man-pages/man7/feature_test_macros.7:167 man-pages/man7/feature_test_macros.7:181 man-pages/man7/feature_test_macros.7:184 man-pages/man7/feature_test_macros.7:187 man-pages/man7/feature_test_macros.7:191 man-pages/man7/feature_test_macros.7:210 man-pages/man7/feature_test_macros.7:213 man-pages/man7/feature_test_macros.7:543 man-pages/man7/feature_test_macros.7:548 man-pages/man7/feature_test_macros.7:554 man-pages/man7/feature_test_macros.7:559 man-pages/man7/feature_test_macros.7:565 man-pages/man7/feature_test_macros.7:570 #, no-wrap msgid "\\(bu" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:151 msgid "" "The value 1 exposes definitions conforming to POSIX.1-1990 and ISO C (1990)." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:154 msgid "" "The value 2 or greater additionally exposes definitions for POSIX.2-1992." msgstr "" #. 199506L functionality is available only since glibc 2.1 #. type: Plain text #: man-pages/man7/feature_test_macros.7:158 msgid "" "The value 199309L or greater additionally exposes definitions for POSIX.1b " "(real-time extensions)." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:161 msgid "" "The value 199506L or greater additionally exposes definitions for POSIX.1c " "(threads)." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:167 msgid "" "(Since glibc 2.3.3) The value 200112L or greater additionally exposes " "definitions corresponding to the POSIX.1-2001 base specification (excluding " "the XSI extension) and also causes C95 (since glibc 2.12) and C99 (since " "glibc 2.10) features to be exposed." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:171 msgid "" "(Since glibc 2.10) The value 200809L or greater additionally exposes " "definitions corresponding to the POSIX.1-2008 base specification (excluding " "the XSI extension)." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:172 #, no-wrap msgid "B<_POSIX_SOURCE>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:177 msgid "" "Defining this obsolete macro with any value is equivalent to defining " "B<_POSIX_C_SOURCE> with the value 1." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:177 #, no-wrap msgid "B<_XOPEN_SOURCE>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:184 msgid "" "Defining with any value exposes definitions conforming to POSIX.1, POSIX.2, " "and XPG4." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:187 msgid "" "The value 500 or greater additionally exposes definitions for SUSv2 (UNIX " "98)." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:191 msgid "" "(Since glibc 2.2) The value 600 or greater additionally exposes definitions " "for SUSv3 (UNIX 03; i.e., the POSIX.1-2001 base specification plus the XSI " "extension) and C99 definitions." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:195 msgid "" "(Since glibc 2.10) The value 700 or greater additionally exposes definitions " "for SUSv4 (i.e., the POSIX.1-2008 base specification plus the XSI extension)." "" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:209 msgid "" "If B<__STRICT_ANSI__> is not defined, or B<_XOPEN_SOURCE> is defined with a " "value greater than or equal to 500 I neither B<_POSIX_SOURCE> not " "B<_POSIX_C_SOURCE> is explicitly defined, then the following macros are " "implicitly defined:" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:213 msgid "B<_POSIX_SOURCE> is defined with the value 1." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:217 msgid "" "B<_POSIX_C_SOURCE> is defined, according to the value of B<_XOPEN_SOURCE>:" msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:218 #, no-wrap msgid "B<_XOPEN_SOURCE> E 500" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:222 msgid "B<_POSIX_C_SOURCE> is defined with the value 2." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:222 #, no-wrap msgid "500 E= B<_XOPEN_SOURCE> E 600" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:226 msgid "B<_POSIX_C_SOURCE> is defined with the value 199506L." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:226 #, no-wrap msgid "600 E= B<_XOPEN_SOURCE> E 700" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:230 msgid "B<_POSIX_C_SOURCE> is defined with the value 200112L." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:230 #, no-wrap msgid "700 E= B<_XOPEN_SOURCE> (since glibc 2.10)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:234 msgid "B<_POSIX_C_SOURCE> is defined with the value 200809L." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:236 #, no-wrap msgid "B<_XOPEN_SOURCE_EXTENDED>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:245 msgid "" "If this macro is defined, and B<_XOPEN_SOURCE> is defined, then expose " "definitions corresponding to the XPG4v2 (SUSv1) UNIX extensions (UNIX 95). " "This macro is also implicitly defined if B<_XOPEN_SOURCE> is defined with a " "value of 500 or more." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:245 #, no-wrap msgid "B<_ISOC99_SOURCE> (since glibc 2.1.3)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:248 msgid "Exposes declarations consistent with the ISO C99 standard." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:254 msgid "" "Earlier glibc 2.1.x versions recognized an equivalent macro named " "B<_ISOC9X_SOURCE> (because the C99 standard had not then been finalized). " "Although the use of this macro is obsolete, glibc continues to recognize it " "for backward compatibility." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:259 msgid "" "Defining B<_ISOC99_SOURCE> also exposes ISO C (1990) Amendment 1 (\"C95\") " "definitions. (The primary change in C95 was support for international " "character sets.)" msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:259 #, no-wrap msgid "B<_ISOC11_SOURCE> (since glibc 2.16)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:264 msgid "" "Exposes declarations consistent with the ISO C11 standard. Defining this " "macro also enables C99 and C95 features (like B<_ISOC99_SOURCE>)." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:264 #, no-wrap msgid "B<_LARGEFILE64_SOURCE>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:285 msgid "" "Expose definitions for the alternative API specified by the LFS (Large File " "Summit) as a \"transitional extension\" to the Single UNIX Specification. " "(See E<.UR http:\\:/\\:/opengroup.org\\:/platform\\:/lfs.html> E<.UE .)> The " "alternative API consists of a set of new objects (i.e., functions and types) " "whose names are suffixed with \"64\" (e.g., I versus I, " "B() versus B(), etc.). New programs should not employ this " "macro; instead I<_FILE_OFFSET_BITS=64> should be employed." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:285 #, no-wrap msgid "B<_LARGEFILE_SOURCE>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:307 msgid "" "This macro was historically used to expose certain functions (specifically " "B(3) and B(3)) that address limitations of earlier APIs " "(B(3) and B(3)) that use I for file offsets. This " "macro is implicitly defined if B<_XOPEN_SOURCE> is defined with a value " "greater than or equal to 500. New programs should not employ this macro; " "defining B<_XOPEN_SOURCE> as just described or defining B<_FILE_OFFSET_BITS> " "with the value 64 is the preferred mechanism to achieve the same result." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:307 #, no-wrap msgid "B<_FILE_OFFSET_BITS>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:317 msgid "" "Defining this macro with the value 64 automatically converts references to " "32-bit functions and data types related to file I/O and filesystem " "operations into references to their 64-bit counterparts. This is useful for " "performing I/O on large files (E 2 Gigabytes) on 32-bit systems. " "(Defining this macro permits correctly written programs to use large files " "with only a recompilation being required.)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:320 msgid "" "64-bit systems naturally permit file sizes greater than 2 Gigabytes, and on " "those systems this macro has no effect." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:320 #, no-wrap msgid "B<_BSD_SOURCE> (deprecated since glibc 2.20)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:324 msgid "" "Defining this macro with any value causes header files to expose BSD-derived " "definitions." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:339 msgid "" "In glibc versions up to and including 2.18, defining this macro also causes " "BSD definitions to be preferred in some situations where standards conflict, " "unless one or more of B<_SVID_SOURCE>, B<_POSIX_SOURCE>, B<_POSIX_C_SOURCE>, " "B<_XOPEN_SOURCE>, B<_XOPEN_SOURCE_EXTENDED>, or B<_GNU_SOURCE> is defined, " "in which case BSD definitions are disfavored. Since glibc 2.19, " "B<_BSD_SOURCE> no longer causes BSD definitions to be preferred in case of " "conflicts." msgstr "" #. commit c941736c92fa3a319221f65f6755659b2a5e0a20 #. commit 498afc54dfee41d33ba519f496e96480badace8e #. commit acd7f096d79c181866d56d4aaf3b043e741f1e2c #. commit ade40b10ff5fa59a318cf55b9d8414b758e8df78 #. type: Plain text #: man-pages/man7/feature_test_macros.7:362 msgid "" "Since glibc 2.20, this macro is deprecated. It now has the same effect as " "defining B<_DEFAULT_SOURCE>, but generates a compile-time warning (unless " "B<_DEFAULT_SOURCE> is also defined). Use B<_DEFAULT_SOURCE> instead. To " "allow code that requires B<_BSD_SOURCE> in glibc 2.19 and earlier and " "B<_DEFAULT_SOURCE> in glibc 2.20 and later to compile without warnings, " "define I B<_BSD_SOURCE> and B<_DEFAULT_SOURCE>." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:362 #, no-wrap msgid "B<_SVID_SOURCE> (deprecated since glibc 2.20)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:368 msgid "" "Defining this macro with any value causes header files to expose System V-" "derived definitions. (SVID == System V Interface Definition; see " "B(7).)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:371 msgid "" "Since glibc 2.20, this macro is deprecated in the same fashion as " "B<_BSD_SOURCE>." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:371 #, no-wrap msgid "B<_DEFAULT_SOURCE> (since glibc 2.19)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:383 msgid "" "This macro can be defined to ensure that the \"default\" definitions are " "provided even when the defaults would otherwise be disabled, as happens when " "individual macros are explicitly defined, or the compiler is invoked in one " "of its \"standard\" modes (e.g., I). Defining " "B<_DEFAULT_SOURCE> without defining other individual macros or invoking the " "compiler in one of its \"standard\" modes has no effect." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:388 msgid "" "The \"default\" definitions comprise those required by POSIX.1-2008 as well " "as various definitions derived from BSD and System V. On glibc 2.19 and " "earlier, these defaults were approximately equivalent to explicitly defining " "the following:" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:390 #, no-wrap msgid " cc -D_BSD_SOURCE -D_SVID_SOURCE -D_POSIX_C_SOURCE=200809\n" msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:391 #, no-wrap msgid "B<_ATFILE_SOURCE> (since glibc 2.4)" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:400 msgid "" "Defining this macro with any value causes header files to expose " "declarations of a range of functions with the suffix \"at\"; see " "B(2). Since glibc 2.10, this macro is also implicitly defined if " "B<_POSIX_C_SOURCE> is defined with a value greater than or equal to 200809L." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:400 #, no-wrap msgid "B<_GNU_SOURCE>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:419 msgid "" "Defining this macro (with any value) implicitly defines B<_ATFILE_SOURCE>, " "B<_LARGEFILE64_SOURCE>, B<_ISOC99_SOURCE>, B<_XOPEN_SOURCE_EXTENDED>, " "B<_POSIX_SOURCE>, B<_POSIX_C_SOURCE> with the value 200809L (200112L in " "glibc versions before 2.10; 199506L in glibc versions before 2.5; 199309L in " "glibc versions before 2.1) and B<_XOPEN_SOURCE> with the value 700 (600 in " "glibc versions before 2.10; 500 in glibc versions before 2.2). In addition, " "various GNU-specific extensions are also exposed." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:430 msgid "" "Since glibc 2.19, defining B<_GNU_SOURCE> also has the effect of implicitly " "defining B<_DEFAULT_SOURCE>. In glibc versions before 2.20, defining " "B<_GNU_SOURCE> also had the effect of implicitly defining B<_BSD_SOURCE> and " "B<_SVID_SOURCE>." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:430 #, no-wrap msgid "B<_REENTRANT>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:436 msgid "" "Defining this macro exposes definitions of certain reentrant functions. For " "multithreaded programs, use I instead." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:436 #, no-wrap msgid "B<_THREAD_SAFE>" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:441 msgid "" "Synonym for B<_REENTRANT>, provided for compatibility with some other " "implementations." msgstr "" #. type: TP #: man-pages/man7/feature_test_macros.7:441 #, no-wrap msgid "B<_FORTIFY_SOURCE> (since glibc 2.3.4)" msgstr "" #. For more detail, see: #. http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html #. [PATCH] Object size checking to prevent (some) buffer overflows #. * From: Jakub Jelinek #. * To: gcc-patches at gcc dot gnu dot org #. * Date: Tue, 21 Sep 2004 04:16:40 -0400 #. type: Plain text #: man-pages/man7/feature_test_macros.7:453 msgid "" "Defining this macro causes some lightweight checks to be performed to detect " "some buffer overflow errors when employing various string and memory " "manipulation functions. Not all buffer overflows are detected, just some " "common cases." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:471 msgid "" "In the current implementation, checks are added for calls to B(3), " "B(3), B(3), B(3), B(3), B(3), " "B(3), B(3), B(3), B(3), B(3), " "B(3), B(3), and B(3)." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:486 msgid "" "If B<_FORTIFY_SOURCE> is set to 1, with compiler optimization level 1 " "(I) and above, checks that shouldn't change the behavior of " "conforming programs are performed. With B<_FORTIFY_SOURCE> set to 2 some " "more checking is added, but some conforming programs might fail. Some of " "the checks can be performed at compile time, and result in compiler " "warnings; other checks take place at run time, and result in a run-time " "error if the check fails." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:490 msgid "" "Use of this macro requires compiler support, available with B(1) since " "version 4.0." msgstr "" #. type: SS #: man-pages/man7/feature_test_macros.7:490 #, no-wrap msgid "Default definitions, implicit definitions, and combining definitions" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:506 msgid "" "If no feature test macros are explicitly defined, then the following feature " "test macros are defined by default: B<_BSD_SOURCE> (in glibc 2.19 and " "earlier), B<_SVID_SOURCE> (in glibc 2.19 and earlier), B<_DEFAULT_SOURCE> " "(since glibc 2.19), B<_POSIX_SOURCE>, and B<_POSIX_C_SOURCE>=200809L " "(200112L in glibc versions before 2.10; 199506L in glibc versions before 2." "4; 199309L in glibc versions before 2.1)." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:525 msgid "" "If any of B<__STRICT_ANSI__>, B<_ISOC99_SOURCE>, B<_POSIX_SOURCE>, " "B<_POSIX_C_SOURCE>, B<_XOPEN_SOURCE>, B<_XOPEN_SOURCE_EXTENDED>, " "B<_BSD_SOURCE> (in glibc 2.19 and earlier), or B<_SVID_SOURCE> (in glibc 2." "19 and earlier) is explicitly defined, then B<_BSD_SOURCE>, " "B<_SVID_SOURCE>, and B<_DEFAULT_SOURCE> are not defined by default." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:536 msgid "" "If B<_POSIX_SOURCE> and B<_POSIX_C_SOURCE> are not explicitly defined, and " "either B<__STRICT_ANSI__> is not defined or B<_XOPEN_SOURCE> is defined with " "a value of 500 or more, then" msgstr "" #. type: IP #: man-pages/man7/feature_test_macros.7:536 man-pages/man7/feature_test_macros.7:539 #, no-wrap msgid "*" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:539 msgid "B<_POSIX_SOURCE> is defined with the value 1; and" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:542 msgid "B<_POSIX_C_SOURCE> is defined with one of the following values:" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:548 msgid "2, if B<_XOPEN_SOURCE> is defined with a value less than 500;" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:554 msgid "" "199506L, if B<_XOPEN_SOURCE> is defined with a value greater than or equal " "to 500 and less than 600; or" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:559 msgid "" "(since glibc 2.4) 200112L, if B<_XOPEN_SOURCE> is defined with a value " "greater than or equal to 600 and less than 700." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:565 msgid "" "(Since glibc 2.10) 200809L, if B<_XOPEN_SOURCE> is defined with a value " "greater than or equal to 700." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:570 msgid "" "Older versions of glibc do not know about the values 200112L and 200809L for " "B<_POSIX_C_SOURCE>, and the setting of this macro will depend on the glibc " "version." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:579 msgid "" "If B<_XOPEN_SOURCE> is undefined, then the setting of B<_POSIX_C_SOURCE> " "depends on the glibc version: 199506L, in glibc versions before 2.4; " "200112L, in glibc 2.4 to 2.9; and 200809L, since glibc 2.10." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:582 msgid "Multiple macros can be defined; the results are additive." msgstr "" #. type: SH #: man-pages/man7/feature_test_macros.7:582 #, no-wrap msgid "CONFORMING TO" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:590 msgid "" "POSIX.1 specifies B<_POSIX_C_SOURCE>, B<_POSIX_SOURCE>, and B<_XOPEN_SOURCE>." " B<_XOPEN_SOURCE_EXTENDED> was specified by XPG4v2 (aka SUSv1)." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:594 msgid "" "B<_FILE_OFFSET_BITS> is not specified by any standard, but is employed on " "some other implementations." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:605 msgid "" "B<_BSD_SOURCE>, B<_SVID_SOURCE>, B<_DEFAULT_SOURCE>, B<_ATFILE_SOURCE>, " "B<_GNU_SOURCE>, B<_FORTIFY_SOURCE>, B<_REENTRANT>, and B<_THREAD_SAFE> are " "specific to Linux (glibc)." msgstr "" #. type: SH #: man-pages/man7/feature_test_macros.7:605 #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:612 msgid "" "Ifeatures.hE> is a Linux/glibc-specific header file. Other " "systems have an analogous file, but typically with a different name. This " "header file is automatically included by other header files as required: it " "is not necessary to explicitly include it in order to employ feature test " "macros." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:624 msgid "" "According to which of the above feature test macros are defined, " "Ifeatures.hE> internally defines various other macros that are " "checked by other glibc header files. These macros have names prefixed by " "two underscores (e.g., B<__USE_MISC>). Programs should I define " "these macros directly: instead, the appropriate feature test macro(s) from " "the list above should be employed." msgstr "" #. type: SH #: man-pages/man7/feature_test_macros.7:624 #, no-wrap msgid "EXAMPLE" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:630 msgid "" "The program below can be used to explore how the various feature test macros " "are set depending on the glibc version and what feature test macros are " "explicitly set. The following shell session, on a system with glibc 2.10, " "shows some examples of what we would see:" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:657 #, no-wrap msgid "" "$ B\n" "$ B<./a.out>\n" "_POSIX_SOURCE defined\n" "_POSIX_C_SOURCE defined: 200809L\n" "_BSD_SOURCE defined\n" "_SVID_SOURCE defined\n" "_ATFILE_SOURCE defined\n" "$ B\n" "$ B<./a.out>\n" "_POSIX_SOURCE defined\n" "_POSIX_C_SOURCE defined: 199506L\n" "_XOPEN_SOURCE defined: 500\n" "$ B\n" "$ B<./a.out>\n" "_POSIX_SOURCE defined\n" "_POSIX_C_SOURCE defined: 200809L\n" "_ISOC99_SOURCE defined\n" "_XOPEN_SOURCE defined: 700\n" "_XOPEN_SOURCE_EXTENDED defined\n" "_LARGEFILE64_SOURCE defined\n" "_BSD_SOURCE defined\n" "_SVID_SOURCE defined\n" "_ATFILE_SOURCE defined\n" "_GNU_SOURCE defined\n" msgstr "" #. type: SS #: man-pages/man7/feature_test_macros.7:659 #, no-wrap msgid "Program source" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:663 #, no-wrap msgid "/* ftm.c */\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:667 #, no-wrap msgid "" "#include Estdio.hE\n" "#include Eunistd.hE\n" "#include Estdlib.hE\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:674 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" "#ifdef _POSIX_SOURCE\n" " printf(\"_POSIX_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:678 #, no-wrap msgid "" "#ifdef _POSIX_C_SOURCE\n" " printf(\"_POSIX_C_SOURCE defined: %ldL\\en\", (long) _POSIX_C_SOURCE);\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:682 #, no-wrap msgid "#ifdef _ISOC99_SOURCE\n" " printf(\"_ISOC99_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:686 #, no-wrap msgid "#ifdef _ISOC11_SOURCE\n" " printf(\"_ISOC11_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:690 #, no-wrap msgid "" "#ifdef _XOPEN_SOURCE\n" " printf(\"_XOPEN_SOURCE defined: %d\\en\", _XOPEN_SOURCE);\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:694 #, no-wrap msgid "" "#ifdef _XOPEN_SOURCE_EXTENDED\n" " printf(\"_XOPEN_SOURCE_EXTENDED defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:698 #, no-wrap msgid "" "#ifdef _LARGEFILE64_SOURCE\n" " printf(\"_LARGEFILE64_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:702 #, no-wrap msgid "" "#ifdef _FILE_OFFSET_BITS\n" " printf(\"_FILE_OFFSET_BITS defined: %d\\en\", _FILE_OFFSET_BITS);\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:706 #, no-wrap msgid "#ifdef _BSD_SOURCE\n" " printf(\"_BSD_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:710 #, no-wrap msgid "#ifdef _SVID_SOURCE\n" " printf(\"_SVID_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:714 #, no-wrap msgid "" "#ifdef _DEFAULT_SOURCE\n" " printf(\"_DEFAULT_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:718 #, no-wrap msgid "#ifdef _ATFILE_SOURCE\n" " printf(\"_ATFILE_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:722 #, no-wrap msgid "#ifdef _GNU_SOURCE\n" " printf(\"_GNU_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:726 #, no-wrap msgid "#ifdef _REENTRANT\n" " printf(\"_REENTRANT defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:730 #, no-wrap msgid "#ifdef _THREAD_SAFE\n" " printf(\"_THREAD_SAFE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:734 #, no-wrap msgid "" "#ifdef _FORTIFY_SOURCE\n" " printf(\"_FORTIFY_SOURCE defined\\en\");\n" "#endif\n" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:737 #, no-wrap msgid " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: SH #: man-pages/man7/feature_test_macros.7:738 #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:741 msgid "B(7), B(7)" msgstr "" #. But beware: the info libc document is out of date (Jul 07, mtk) #. type: Plain text #: man-pages/man7/feature_test_macros.7:745 msgid "The section \"Feature Test Macros\" under I." msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:747 msgid "I" msgstr "" #. type: SH #: man-pages/man7/feature_test_macros.7:747 #, no-wrap msgid "COLOPHON" msgstr "" #. type: Plain text #: man-pages/man7/feature_test_macros.7:755 msgid "" "This page is part of release 3.70 of the Linux I project. A " "description of the project, information about reporting bugs, and the latest " "version of this page, can be found at \\%http://www.kernel.org/doc/man-pages/" "." msgstr ""