{"id":952,"date":"2010-10-04T16:14:36","date_gmt":"2010-10-04T16:14:36","guid":{"rendered":"http:\/\/pchero21.com\/?p=952"},"modified":"2010-10-04T16:14:36","modified_gmt":"2010-10-04T16:14:36","slug":"usrincludefeatures-h","status":"publish","type":"post","link":"http:\/\/pchero21.com\/?p=952","title":{"rendered":"\/usr\/include\/features.h"},"content":{"rendered":"<p>&nbsp;\/usr\/include\/features.h \ud30c\uc77c\uc5d0\ub294 \ucef4\ud30c\uc77c \ud560 \ub54c \uc0ac\uc6a9\ud558\ub294 -D \uc635\uc158\uacfc \uae34\ubc00\ud55c \uad00\uacc4\uac00 \uc788\ub2e4.<\/p>\n<p>&nbsp;\uc5b4\ub5a4 Define\uc744 \ud558\ub290\ub0d0\uc5d0 \ub530\ub77c \uac01\uae30 \ub2e4\ub978 \ub0b4\uc6a9\uc758 \ucef4\ud30c\uc77c\uacfc \ub9c1\ud06c\uac00 \uc774\ub8e8\uc5b4 \uc9c4\ub2e4.<\/p>\n<p>&nbsp;\uadf8 \ub0b4\uc6a9\uc744 \/usr\/include\/features.h \ud30c\uc77c\uc758 \uc804\ubb38\uc744 \uc5ec\uae30\uc5d0 \uc2e3\ub294\ub2e4.<\/p>\n<p>\/* Copyright (C) 1991-1993,1995-2006,2007,2009 Free Software Foundation, Inc.<br \/>&nbsp;&nbsp; This file is part of the GNU C Library.<\/p>\n<p>&nbsp;&nbsp; The GNU C Library is free software; you can redistribute it and\/or<br \/>&nbsp;&nbsp; modify it under the terms of the GNU Lesser General Public<br \/>&nbsp;&nbsp; License as published by the Free Software Foundation; either<br \/>&nbsp;&nbsp; version 2.1 of the License, or (at your option) any later version.<\/p>\n<p>&nbsp;&nbsp; The GNU C Library is distributed in the hope that it will be useful,<br \/>&nbsp;&nbsp; but WITHOUT ANY WARRANTY; without even the implied warranty of<br \/>&nbsp;&nbsp; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&nbsp; See the GNU<br \/>&nbsp;&nbsp; Lesser General Public License for more details.<\/p>\n<p>&nbsp;&nbsp; You should have received a copy of the GNU Lesser General Public<br \/>&nbsp;&nbsp; License along with the GNU C Library; if not, write to the Free<br \/>&nbsp;&nbsp; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA<br \/>&nbsp;&nbsp; 02111-1307 USA.&nbsp; *\/<\/p>\n<p>#ifndef &nbsp; &nbsp;_FEATURES_H<br \/>#define &nbsp; &nbsp;_FEATURES_H &nbsp; &nbsp;1<\/p>\n<p>\/* These are defined by the user (or the compiler)<br \/>&nbsp;&nbsp; to specify the desired environment:<\/p>\n<p>&nbsp;&nbsp; __STRICT_ANSI__ &nbsp; &nbsp;ISO Standard C.<br \/>&nbsp;&nbsp; _ISOC99_SOURCE &nbsp; &nbsp;Extensions to ISO C89 from ISO C99.<br \/>&nbsp;&nbsp; _POSIX_SOURCE &nbsp; &nbsp;IEEE Std 1003.1.<br \/>&nbsp;&nbsp; _POSIX_C_SOURCE &nbsp; &nbsp;If ==1, like _POSIX_SOURCE; if &gt;=2 add IEEE Std 1003.2;<br \/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if &gt;=199309L, add IEEE Std 1003.1b-1993;<br \/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if &gt;=199506L, add IEEE Std 1003.1c-1995;<br \/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if &gt;=200112L, all of IEEE 1003.1-2004<br \/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if &gt;=200809L, all of IEEE 1003.1-2008<br \/>&nbsp;&nbsp; _XOPEN_SOURCE &nbsp; &nbsp;Includes POSIX and XPG things.&nbsp; Set to 500 if<br \/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Single Unix conformance is wanted, to 600 for the<br \/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sixth revision, to 700 for the seventh revision.<br \/>&nbsp;&nbsp; _XOPEN_SOURCE_EXTENDED XPG things and X\/Open Unix extensions.<br \/>&nbsp;&nbsp; _LARGEFILE_SOURCE &nbsp; &nbsp;Some more functions for correct standard I\/O.<br \/>&nbsp;&nbsp; _LARGEFILE64_SOURCE &nbsp; &nbsp;Additional functionality from LFS for large files.<br \/>&nbsp;&nbsp; _FILE_OFFSET_BITS=N &nbsp; &nbsp;Select default filesystem interface.<br \/>&nbsp;&nbsp; _BSD_SOURCE &nbsp; &nbsp; &nbsp; &nbsp;ISO C, POSIX, and 4.3BSD things.<br \/>&nbsp;&nbsp; _SVID_SOURCE &nbsp; &nbsp; &nbsp; &nbsp;ISO C, POSIX, and SVID things.<br \/>&nbsp;&nbsp; _ATFILE_SOURCE &nbsp; &nbsp;Additional *at interfaces.<br \/>&nbsp;&nbsp; _GNU_SOURCE &nbsp; &nbsp; &nbsp; &nbsp;All of the above, plus GNU extensions.<br \/>&nbsp;&nbsp; _REENTRANT &nbsp; &nbsp; &nbsp; &nbsp;Select additionally reentrant object.<br \/>&nbsp;&nbsp; _THREAD_SAFE &nbsp; &nbsp; &nbsp; &nbsp;Same as _REENTRANT, often used by other systems.<br \/>&nbsp;&nbsp; _FORTIFY_SOURCE &nbsp; &nbsp;If set to numeric value &gt; 0 additional security<br \/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;measures are defined, according to level.<\/p>\n<p>&nbsp;&nbsp; The `-ansi&#8217; switch to the GNU C compiler defines __STRICT_ANSI__.<br \/>&nbsp;&nbsp; If none of these are defined, the default is to have _SVID_SOURCE,<br \/>&nbsp;&nbsp; _BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to<br \/>&nbsp;&nbsp; 200112L.&nbsp; If more than one of these are defined, they accumulate.<br \/>&nbsp;&nbsp; For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE<br \/>&nbsp;&nbsp; together give you ISO C, 1003.1, and 1003.2, but nothing else.<\/p>\n<p>&nbsp;&nbsp; These are defined by this file and are used by the<br \/>&nbsp;&nbsp; header files to decide what to declare or define:<\/p>\n<p>&nbsp;&nbsp; __USE_ISOC99 &nbsp; &nbsp; &nbsp; &nbsp;Define ISO C99 things.<br \/>&nbsp;&nbsp; __USE_ISOC95 &nbsp; &nbsp; &nbsp; &nbsp;Define ISO C90 AMD1 (C95) things.<br \/>&nbsp;&nbsp; __USE_POSIX &nbsp; &nbsp; &nbsp; &nbsp;Define IEEE Std 1003.1 things.<br \/>&nbsp;&nbsp; __USE_POSIX2 &nbsp; &nbsp; &nbsp; &nbsp;Define IEEE Std 1003.2 things.<br \/>&nbsp;&nbsp; __USE_POSIX199309 &nbsp; &nbsp;Define IEEE Std 1003.1, and .1b things.<br \/>&nbsp;&nbsp; __USE_POSIX199506 &nbsp; &nbsp;Define IEEE Std 1003.1, .1b, .1c and .1i things.<br \/>&nbsp;&nbsp; __USE_XOPEN &nbsp; &nbsp; &nbsp; &nbsp;Define XPG things.<br \/>&nbsp;&nbsp; __USE_XOPEN_EXTENDED &nbsp; &nbsp;Define X\/Open Unix things.<br \/>&nbsp;&nbsp; __USE_UNIX98 &nbsp; &nbsp; &nbsp; &nbsp;Define Single Unix V2 things.<br \/>&nbsp;&nbsp; __USE_XOPEN2K &nbsp; &nbsp; &nbsp;&nbsp; Define XPG6 things.<br \/>&nbsp;&nbsp; __USE_XOPEN2K8 &nbsp; &nbsp; &nbsp; Define XPG7 things.<br \/>&nbsp;&nbsp; __USE_LARGEFILE &nbsp; &nbsp;Define correct standard I\/O things.<br \/>&nbsp;&nbsp; __USE_LARGEFILE64 &nbsp; &nbsp;Define LFS things with separate names.<br \/>&nbsp;&nbsp; __USE_FILE_OFFSET64 &nbsp; &nbsp;Define 64bit interface as default.<br \/>&nbsp;&nbsp; __USE_BSD &nbsp; &nbsp; &nbsp; &nbsp;Define 4.3BSD things.<br \/>&nbsp;&nbsp; __USE_SVID &nbsp; &nbsp; &nbsp; &nbsp;Define SVID things.<br \/>&nbsp;&nbsp; __USE_MISC &nbsp; &nbsp; &nbsp; &nbsp;Define things common to BSD and System V Unix.<br \/>&nbsp;&nbsp; __USE_ATFILE &nbsp; &nbsp; &nbsp; &nbsp;Define *at interfaces and AT_* constants for them.<br \/>&nbsp;&nbsp; __USE_GNU &nbsp; &nbsp; &nbsp; &nbsp;Define GNU extensions.<br \/>&nbsp;&nbsp; __USE_REENTRANT &nbsp; &nbsp;Define reentrant\/thread-safe *_r functions.<br \/>&nbsp;&nbsp; __USE_FORTIFY_LEVEL &nbsp; &nbsp;Additional security measures used, according to level.<br \/>&nbsp;&nbsp; __FAVOR_BSD &nbsp; &nbsp; &nbsp; &nbsp;Favor 4.3BSD things in cases of conflict.<\/p>\n<p>&nbsp;&nbsp; The macros `__GNU_LIBRARY__&#8217;, `__GLIBC__&#8217;, and `__GLIBC_MINOR__&#8217; are<br \/>&nbsp;&nbsp; defined by this file unconditionally.&nbsp; `__GNU_LIBRARY__&#8217; is provided<br \/>&nbsp;&nbsp; only for compatibility.&nbsp; All new code should use the other symbols<br \/>&nbsp;&nbsp; to test for features.<\/p>\n<p>&nbsp;&nbsp; All macros listed above as possibly being defined by this file are<br \/>&nbsp;&nbsp; explicitly undefined if they are not explicitly defined.<br \/>&nbsp;&nbsp; Feature-test macros that are not defined by the user or compiler<br \/>&nbsp;&nbsp; but are implied by the other feature-test macros defined (or by the<br \/>&nbsp;&nbsp; lack of any definitions) are defined by the file.&nbsp; *\/<\/p>\n<p>\/* Undefine everything, so we get a clean slate.&nbsp; *\/<br \/>#undef &nbsp; &nbsp;__USE_ISOC99<br \/>#undef &nbsp; &nbsp;__USE_ISOC95<br \/>#undef &nbsp; &nbsp;__USE_POSIX<br \/>#undef &nbsp; &nbsp;__USE_POSIX2<br \/>#undef &nbsp; &nbsp;__USE_POSIX199309<br \/>#undef &nbsp; &nbsp;__USE_POSIX199506<br \/>#undef &nbsp; &nbsp;__USE_XOPEN<br \/>#undef &nbsp; &nbsp;__USE_XOPEN_EXTENDED<br \/>#undef &nbsp; &nbsp;__USE_UNIX98<br \/>#undef &nbsp; &nbsp;__USE_XOPEN2K<br \/>#undef &nbsp; &nbsp;__USE_XOPEN2K8<br \/>#undef &nbsp; &nbsp;__USE_LARGEFILE<br \/>#undef &nbsp; &nbsp;__USE_LARGEFILE64<br \/>#undef &nbsp; &nbsp;__USE_FILE_OFFSET64<br \/>#undef &nbsp; &nbsp;__USE_BSD<br \/>#undef &nbsp; &nbsp;__USE_SVID<br \/>#undef &nbsp; &nbsp;__USE_MISC<br \/>#undef &nbsp; &nbsp;__USE_ATFILE<br \/>#undef &nbsp; &nbsp;__USE_GNU<br \/>#undef &nbsp; &nbsp;__USE_REENTRANT<br \/>#undef &nbsp; &nbsp;__USE_FORTIFY_LEVEL<br \/>#undef &nbsp; &nbsp;__FAVOR_BSD<br \/>#undef &nbsp; &nbsp;__KERNEL_STRICT_NAMES<\/p>\n<p>\/* Suppress kernel-name space pollution unless user expressedly asks<br \/>&nbsp;&nbsp; for it.&nbsp; *\/<br \/>#ifndef _LOOSE_KERNEL_NAMES<br \/># define __KERNEL_STRICT_NAMES<br \/>#endif<\/p>\n<p>\/* Always use ISO C things.&nbsp; *\/<br \/>#define &nbsp; &nbsp;__USE_ANSI &nbsp; &nbsp;1<\/p>\n<p>\/* Convenience macros to test the versions of glibc and gcc.<br \/>&nbsp;&nbsp; Use them like this:<br \/>&nbsp;&nbsp; #if __GNUC_PREREQ (2,8)<br \/>&nbsp;&nbsp; &#8230; code requiring gcc 2.8 or later &#8230;<br \/>&nbsp;&nbsp; #endif<br \/>&nbsp;&nbsp; Note &#8211; they won&#8217;t work for gcc1 or glibc1, since the _MINOR macros<br \/>&nbsp;&nbsp; were not defined then.&nbsp; *\/<br \/>#if defined __GNUC__ &amp;&amp; defined __GNUC_MINOR__<br \/># define __GNUC_PREREQ(maj, min) <br \/>&nbsp;&nbsp; &nbsp;((__GNUC__ &lt;&lt; 16) + __GNUC_MINOR__ &gt;= ((maj) &lt;&lt; 16) + (min))<br \/>#else<br \/># define __GNUC_PREREQ(maj, min) 0<br \/>#endif<\/p>\n<p>\/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX.&nbsp; *\/<br \/>#if defined _BSD_SOURCE &amp;&amp; <br \/>&nbsp; &nbsp; !(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || <br \/>&nbsp; &nbsp; &nbsp; defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || <br \/>&nbsp; &nbsp; &nbsp; defined _GNU_SOURCE || defined _SVID_SOURCE)<br \/># define __FAVOR_BSD &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>\/* If _GNU_SOURCE was defined by the user, turn on all the other features.&nbsp; *\/<br \/>#ifdef _GNU_SOURCE<br \/># undef&nbsp; _ISOC99_SOURCE<br \/># define _ISOC99_SOURCE &nbsp; &nbsp;1<br \/># undef&nbsp; _POSIX_SOURCE<br \/># define _POSIX_SOURCE &nbsp; &nbsp;1<br \/># undef&nbsp; _POSIX_C_SOURCE<br \/># define _POSIX_C_SOURCE &nbsp; &nbsp;200809L<br \/># undef&nbsp; _XOPEN_SOURCE<br \/># define _XOPEN_SOURCE &nbsp; &nbsp;700<br \/># undef&nbsp; _XOPEN_SOURCE_EXTENDED<br \/># define _XOPEN_SOURCE_EXTENDED &nbsp; &nbsp;1<br \/># undef &nbsp; &nbsp; _LARGEFILE64_SOURCE<br \/># define _LARGEFILE64_SOURCE &nbsp; &nbsp;1<br \/># undef&nbsp; _BSD_SOURCE<br \/># define _BSD_SOURCE &nbsp; &nbsp;1<br \/># undef&nbsp; _SVID_SOURCE<br \/># define _SVID_SOURCE &nbsp; &nbsp;1<br \/># undef&nbsp; _ATFILE_SOURCE<br \/># define _ATFILE_SOURCE &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>\/* If nothing (other than _GNU_SOURCE) is defined,<br \/>&nbsp;&nbsp; define _BSD_SOURCE and _SVID_SOURCE.&nbsp; *\/<br \/>#if (!defined __STRICT_ANSI__ &amp;&amp; !defined _ISOC99_SOURCE &amp;&amp; <br \/>&nbsp; &nbsp;&nbsp; !defined _POSIX_SOURCE &amp;&amp; !defined _POSIX_C_SOURCE &amp;&amp; <br \/>&nbsp; &nbsp;&nbsp; !defined _XOPEN_SOURCE &amp;&amp; !defined _XOPEN_SOURCE_EXTENDED &amp;&amp; <br \/>&nbsp; &nbsp;&nbsp; !defined _BSD_SOURCE &amp;&amp; !defined _SVID_SOURCE)<br \/># define _BSD_SOURCE &nbsp; &nbsp;1<br \/># define _SVID_SOURCE &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>\/* This is to enable the ISO C99 extension.&nbsp; Also recognize the old macro<br \/>&nbsp;&nbsp; which was used prior to the standard acceptance.&nbsp; This macro will<br \/>&nbsp;&nbsp; eventually go away and the features enabled by default once the ISO C99<br \/>&nbsp;&nbsp; standard is widely adopted.&nbsp; *\/<br \/>#if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE <br \/>&nbsp; &nbsp;&nbsp; || (defined __STDC_VERSION__ &amp;&amp; __STDC_VERSION__ &gt;= 199901L))<br \/># define __USE_ISOC99 &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>\/* This is to enable the ISO C90 Amendment 1:1995 extension.&nbsp; *\/<br \/>#if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE <br \/>&nbsp; &nbsp;&nbsp; || (defined __STDC_VERSION__ &amp;&amp; __STDC_VERSION__ &gt;= 199409L))<br \/># define __USE_ISOC95 &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>\/* If none of the ANSI\/POSIX macros are defined, use POSIX.1 and POSIX.2<br \/>&nbsp;&nbsp; (and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined).&nbsp; *\/<br \/>#if ((!defined __STRICT_ANSI__ || (_XOPEN_SOURCE &#8211; 0) &gt;= 500) &amp;&amp; <br \/>&nbsp; &nbsp;&nbsp; !defined _POSIX_SOURCE &amp;&amp; !defined _POSIX_C_SOURCE)<br \/># define _POSIX_SOURCE &nbsp; &nbsp;1<br \/># if defined _XOPEN_SOURCE &amp;&amp; (_XOPEN_SOURCE &#8211; 0) &lt; 500<br \/>#&nbsp; define _POSIX_C_SOURCE &nbsp; &nbsp;2<br \/># elif defined _XOPEN_SOURCE &amp;&amp; (_XOPEN_SOURCE &#8211; 0) &lt; 600<br \/>#&nbsp; define _POSIX_C_SOURCE &nbsp; &nbsp;199506L<br \/># elif defined _XOPEN_SOURCE &amp;&amp; (_XOPEN_SOURCE &#8211; 0) &lt; 700<br \/>#&nbsp; define _POSIX_C_SOURCE &nbsp; &nbsp;200112L<br \/># else<br \/>#&nbsp; define _POSIX_C_SOURCE &nbsp; &nbsp;200809L<br \/># endif<br \/># define __USE_POSIX_IMPLICITLY &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if defined _POSIX_SOURCE || _POSIX_C_SOURCE &gt;= 1 || defined _XOPEN_SOURCE<br \/># define __USE_POSIX &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if defined _POSIX_C_SOURCE &amp;&amp; _POSIX_C_SOURCE &gt;= 2 || defined _XOPEN_SOURCE<br \/># define __USE_POSIX2 &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if (_POSIX_C_SOURCE &#8211; 0) &gt;= 199309L<br \/># define __USE_POSIX199309 &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if (_POSIX_C_SOURCE &#8211; 0) &gt;= 199506L<br \/># define __USE_POSIX199506 &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if (_POSIX_C_SOURCE &#8211; 0) &gt;= 200112L<br \/># define __USE_XOPEN2K &nbsp; &nbsp; &nbsp; &nbsp;1<br \/># undef __USE_ISOC99<br \/># define __USE_ISOC99 &nbsp; &nbsp; &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if (_POSIX_C_SOURCE &#8211; 0) &gt;= 200809L<br \/># define __USE_XOPEN2K8 &nbsp; &nbsp; &nbsp; &nbsp;1<br \/># undef&nbsp; _ATFILE_SOURCE<br \/># define _ATFILE_SOURCE &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#ifdef &nbsp; &nbsp;_XOPEN_SOURCE<br \/># define __USE_XOPEN &nbsp; &nbsp;1<br \/># if (_XOPEN_SOURCE &#8211; 0) &gt;= 500<br \/>#&nbsp; define __USE_XOPEN_EXTENDED &nbsp; &nbsp;1<br \/>#&nbsp; define __USE_UNIX98 &nbsp; &nbsp;1<br \/>#&nbsp; undef _LARGEFILE_SOURCE<br \/>#&nbsp; define _LARGEFILE_SOURCE &nbsp; &nbsp;1<br \/>#&nbsp; if (_XOPEN_SOURCE &#8211; 0) &gt;= 600<br \/># &nbsp; if (_XOPEN_SOURCE &#8211; 0) &gt;= 700<br \/># &nbsp;&nbsp; define __USE_XOPEN2K8 &nbsp; &nbsp;1<br \/># &nbsp; endif<br \/># &nbsp; define __USE_XOPEN2K &nbsp; &nbsp;1<br \/># &nbsp; undef __USE_ISOC99<br \/># &nbsp; define __USE_ISOC99 &nbsp; &nbsp; &nbsp; &nbsp;1<br \/>#&nbsp; endif<br \/># else<br \/>#&nbsp; ifdef _XOPEN_SOURCE_EXTENDED<br \/># &nbsp; define __USE_XOPEN_EXTENDED &nbsp; &nbsp;1<br \/>#&nbsp; endif<br \/># endif<br \/>#endif<\/p>\n<p>#ifdef _LARGEFILE_SOURCE<br \/># define __USE_LARGEFILE &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#ifdef _LARGEFILE64_SOURCE<br \/># define __USE_LARGEFILE64 &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if defined _FILE_OFFSET_BITS &amp;&amp; _FILE_OFFSET_BITS == 64<br \/># define __USE_FILE_OFFSET64 &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if defined _BSD_SOURCE || defined _SVID_SOURCE<br \/># define __USE_MISC &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#ifdef &nbsp; &nbsp;_BSD_SOURCE<br \/># define __USE_BSD &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#ifdef &nbsp; &nbsp;_SVID_SOURCE<br \/># define __USE_SVID &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#ifdef &nbsp; &nbsp;_ATFILE_SOURCE<br \/># define __USE_ATFILE &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#ifdef &nbsp; &nbsp;_GNU_SOURCE<br \/># define __USE_GNU &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if defined _REENTRANT || defined _THREAD_SAFE<br \/># define __USE_REENTRANT &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>#if defined _FORTIFY_SOURCE &amp;&amp; _FORTIFY_SOURCE &gt; 0 <br \/>&nbsp; &nbsp; &amp;&amp; __GNUC_PREREQ (4, 1) &amp;&amp; defined __OPTIMIZE__ &amp;&amp; __OPTIMIZE__ &gt; 0<br \/># if _FORTIFY_SOURCE &gt; 1<br \/>#&nbsp; define __USE_FORTIFY_LEVEL 2<br \/># else<br \/>#&nbsp; define __USE_FORTIFY_LEVEL 1<br \/># endif<br \/>#else<br \/># define __USE_FORTIFY_LEVEL 0<br \/>#endif<\/p>\n<p>\/* Define __STDC_IEC_559__ and other similar macros.&nbsp; *\/<br \/>#include &lt;bits\/predefs.h&gt;<\/p>\n<p>\/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) \/ Unicode 3.1.&nbsp; *\/<br \/>#define __STDC_ISO_10646__ &nbsp; &nbsp; &nbsp; &nbsp;200009L<\/p>\n<p>\/* This macro indicates that the installed library is the GNU C Library.<br \/>&nbsp;&nbsp; For historic reasons the value now is 6 and this will stay from now<br \/>&nbsp;&nbsp; on.&nbsp; The use of this variable is deprecated.&nbsp; Use __GLIBC__ and<br \/>&nbsp;&nbsp; __GLIBC_MINOR__ now (see below) when you want to test for a specific<br \/>&nbsp;&nbsp; GNU C library version and use the values in &lt;gnu\/lib-names.h&gt; to get<br \/>&nbsp;&nbsp; the sonames of the shared libraries.&nbsp; *\/<br \/>#undef&nbsp; __GNU_LIBRARY__<br \/>#define __GNU_LIBRARY__ 6<\/p>\n<p>\/* Major and minor version number of the GNU C library package.&nbsp; Use<br \/>&nbsp;&nbsp; these macros to test for features in specific releases.&nbsp; *\/<br \/>#define &nbsp; &nbsp;__GLIBC__ &nbsp; &nbsp;2<br \/>#define &nbsp; &nbsp;__GLIBC_MINOR__ &nbsp; &nbsp;11<\/p>\n<p>#define __GLIBC_PREREQ(maj, min) <br \/>&nbsp;&nbsp; &nbsp;((__GLIBC__ &lt;&lt; 16) + __GLIBC_MINOR__ &gt;= ((maj) &lt;&lt; 16) + (min))<\/p>\n<p>\/* Decide whether a compiler supports the long long datatypes.&nbsp; *\/<br \/>#if defined __GNUC__ <br \/>&nbsp; &nbsp; || (defined __PGI &amp;&amp; defined __i386__ ) <br \/>&nbsp; &nbsp; || (defined __INTEL_COMPILER &amp;&amp; (defined __i386__ || defined __ia64__)) <br \/>&nbsp; &nbsp; || (defined __STDC_VERSION__ &amp;&amp; __STDC_VERSION__ &gt;= 199901L)<br \/># define __GLIBC_HAVE_LONG_LONG &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>\/* This is here only because every header file already includes this one.&nbsp; *\/<br \/>#ifndef __ASSEMBLER__<br \/># ifndef _SYS_CDEFS_H<br \/>#&nbsp; include &lt;sys\/cdefs.h&gt;<br \/># endif<\/p>\n<p>\/* If we don&#8217;t have __REDIRECT, prototypes will be missing if<br \/>&nbsp;&nbsp; __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. *\/<br \/># if defined __USE_FILE_OFFSET64 &amp;&amp; !defined __REDIRECT<br \/>#&nbsp; define __USE_LARGEFILE &nbsp; &nbsp;1<br \/>#&nbsp; define __USE_LARGEFILE64 &nbsp; &nbsp;1<br \/># endif<\/p>\n<p>#endif &nbsp; &nbsp;\/* !ASSEMBLER *\/<\/p>\n<p>\/* Decide whether we can define &#8216;extern inline&#8217; functions in headers.&nbsp; *\/<br \/>#if __GNUC_PREREQ (2, 7) &amp;&amp; defined __OPTIMIZE__ <br \/>&nbsp; &nbsp; &amp;&amp; !defined __OPTIMIZE_SIZE__ &amp;&amp; !defined __NO_INLINE__ <br \/>&nbsp; &nbsp; &amp;&amp; defined __extern_inline<br \/># define __USE_EXTERN_INLINES &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>\/* There are some functions that must be declared &#8216;extern inline&#8217; even with<br \/>&nbsp;&nbsp; -Os when building LIBC, or they&#8217;ll end up undefined.&nbsp; *\/<br \/>#if __GNUC_PREREQ (2, 7) &amp;&amp; defined __OPTIMIZE__ <br \/>&nbsp; &nbsp; &amp;&amp; (defined _LIBC || !defined __OPTIMIZE_SIZE__) &amp;&amp; !defined __NO_INLINE__ <br \/>&nbsp; &nbsp; &amp;&amp; defined __extern_inline<br \/># define __USE_EXTERN_INLINES_IN_LIBC &nbsp; &nbsp;1<br \/>#endif<\/p>\n<p>\/* This is here only because every header file already includes this one.<br \/>&nbsp;&nbsp; Get the definitions of all the appropriate `__stub_FUNCTION&#8217; symbols.<br \/>&nbsp;&nbsp; &lt;gnu\/stubs.h&gt; contains `#define __stub_FUNCTION&#8217; when FUNCTION is a stub<br \/>&nbsp;&nbsp; that will always return failure (and set errno to ENOSYS).&nbsp; *\/<br \/>#include &lt;gnu\/stubs.h&gt;<\/p>\n<p>#endif &nbsp; &nbsp;\/* features.h&nbsp; *\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;\/usr\/include\/features.h \ud30c\uc77c\uc5d0\ub294 \ucef4\ud30c\uc77c \ud560 \ub54c \uc0ac\uc6a9\ud558\ub294 -D \uc635\uc158\uacfc \uae34\ubc00\ud55c \uad00\uacc4\uac00 \uc788\ub2e4. &nbsp;\uc5b4\ub5a4 Define\uc744 \ud558\ub290\ub0d0\uc5d0 \ub530\ub77c \uac01\uae30 \ub2e4\ub978 \ub0b4\uc6a9\uc758 \ucef4\ud30c\uc77c\uacfc \ub9c1\ud06c\uac00 \uc774\ub8e8\uc5b4 \uc9c4\ub2e4. &nbsp;\uadf8 \ub0b4\uc6a9\uc744 \/usr\/include\/features.h \ud30c\uc77c\uc758 \uc804\ubb38\uc744 \uc5ec\uae30\uc5d0 \uc2e3\ub294\ub2e4. \/* Copyright (C) 1991-1993,1995-2006,2007,2009 Free Software Foundation, Inc.&nbsp;&nbsp; This file is &hellip; <a href=\"http:\/\/pchero21.com\/?p=952\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[68,128,172,241],"_links":{"self":[{"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/posts\/952"}],"collection":[{"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/pchero21.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=952"}],"version-history":[{"count":0,"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/posts\/952\/revisions"}],"wp:attachment":[{"href":"http:\/\/pchero21.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pchero21.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=952"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pchero21.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}