Dr Andrew Scott G7VAV

My photo
 
April 2024
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12


features.h
001: /* Copyright (C) 1991-1993,1995-2007,2009,2010,2011
002:    Free Software Foundation, Inc.
003:    This file is part of the GNU C Library.
004: 
005:    The GNU C Library is free software; you can redistribute it and/or
006:    modify it under the terms of the GNU Lesser General Public
007:    License as published by the Free Software Foundation; either
008:    version 2.1 of the License, or (at your option) any later version.
009: 
010:    The GNU C Library is distributed in the hope that it will be useful,
011:    but WITHOUT ANY WARRANTY; without even the implied warranty of
012:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013:    Lesser General Public License for more details.
014: 
015:    You should have received a copy of the GNU Lesser General Public
016:    License along with the GNU C Library; if not, write to the Free
017:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
018:    02111-1307 USA.  */
019: 
020: #ifndef _FEATURES_H
021: #define _FEATURES_H     1
022: 
023: /* These are defined by the user (or the compiler)
024:    to specify the desired environment:
025: 
026:    __STRICT_ANSI__      ISO Standard C.
027:    _ISOC99_SOURCE       Extensions to ISO C89 from ISO C99.
028:    _POSIX_SOURCE        IEEE Std 1003.1.
029:    _POSIX_C_SOURCE      If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
030:                         if >=199309L, add IEEE Std 1003.1b-1993;
031:                         if >=199506L, add IEEE Std 1003.1c-1995;
032:                         if >=200112L, all of IEEE 1003.1-2004
033:                         if >=200809L, all of IEEE 1003.1-2008
034:    _XOPEN_SOURCE        Includes POSIX and XPG things.  Set to 500 if
035:                         Single Unix conformance is wanted, to 600 for the
036:                         sixth revision, to 700 for the seventh revision.
037:    _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
038:    _LARGEFILE_SOURCE    Some more functions for correct standard I/O.
039:    _LARGEFILE64_SOURCE  Additional functionality from LFS for large files.
040:    _FILE_OFFSET_BITS=N  Select default filesystem interface.
041:    _BSD_SOURCE          ISO C, POSIX, and 4.3BSD things.
042:    _SVID_SOURCE         ISO C, POSIX, and SVID things.
043:    _ATFILE_SOURCE       Additional *at interfaces.
044:    _GNU_SOURCE          All of the above, plus GNU extensions.
045:    _REENTRANT           Select additionally reentrant object.
046:    _THREAD_SAFE         Same as _REENTRANT, often used by other systems.
047:    _FORTIFY_SOURCE      If set to numeric value > 0 additional security
048:                         measures are defined, according to level.
049: 
050:    The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__.
051:    If none of these are defined, the default is to have _SVID_SOURCE,
052:    _BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
053:    200112L.  If more than one of these are defined, they accumulate.
054:    For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE
055:    together give you ISO C, 1003.1, and 1003.2, but nothing else.
056: 
057:    These are defined by this file and are used by the
058:    header files to decide what to declare or define:
059: 
060:    __USE_ISOC99         Define ISO C99 things.
061:    __USE_ISOC95         Define ISO C90 AMD1 (C95) things.
062:    __USE_POSIX          Define IEEE Std 1003.1 things.
063:    __USE_POSIX2         Define IEEE Std 1003.2 things.
064:    __USE_POSIX199309    Define IEEE Std 1003.1, and .1b things.
065:    __USE_POSIX199506    Define IEEE Std 1003.1, .1b, .1c and .1i things.
066:    __USE_XOPEN          Define XPG things.
067:    __USE_XOPEN_EXTENDED Define X/Open Unix things.
068:    __USE_UNIX98         Define Single Unix V2 things.
069:    __USE_XOPEN2K        Define XPG6 things.
070:    __USE_XOPEN2KXSI     Define XPG6 XSI things.
071:    __USE_XOPEN2K8       Define XPG7 things.
072:    __USE_XOPEN2K8XSI    Define XPG7 XSI things.
073:    __USE_LARGEFILE      Define correct standard I/O things.
074:    __USE_LARGEFILE64    Define LFS things with separate names.
075:    __USE_FILE_OFFSET64  Define 64bit interface as default.
076:    __USE_BSD            Define 4.3BSD things.
077:    __USE_SVID           Define SVID things.
078:    __USE_MISC           Define things common to BSD and System V Unix.
079:    __USE_ATFILE         Define *at interfaces and AT_* constants for them.
080:    __USE_GNU            Define GNU extensions.
081:    __USE_REENTRANT      Define reentrant/thread-safe *_r functions.
082:    __USE_FORTIFY_LEVEL  Additional security measures used, according to level.
083:    __FAVOR_BSD          Favor 4.3BSD things in cases of conflict.
084: 
085:    The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
086:    defined by this file unconditionally.  `__GNU_LIBRARY__' is provided
087:    only for compatibility.  All new code should use the other symbols
088:    to test for features.
089: 
090:    All macros listed above as possibly being defined by this file are
091:    explicitly undefined if they are not explicitly defined.
092:    Feature-test macros that are not defined by the user or compiler
093:    but are implied by the other feature-test macros defined (or by the
094:    lack of any definitions) are defined by the file.  */
095: 
096: 
097: /* Undefine everything, so we get a clean slate.  */
098: #undef  __USE_ISOC99
099: #undef  __USE_ISOC95
100: #undef  __USE_POSIX
101: #undef  __USE_POSIX2
102: #undef  __USE_POSIX199309
103: #undef  __USE_POSIX199506
104: #undef  __USE_XOPEN
105: #undef  __USE_XOPEN_EXTENDED
106: #undef  __USE_UNIX98
107: #undef  __USE_XOPEN2K
108: #undef  __USE_XOPEN2KXSI
109: #undef  __USE_XOPEN2K8
110: #undef  __USE_XOPEN2K8XSI
111: #undef  __USE_LARGEFILE
112: #undef  __USE_LARGEFILE64
113: #undef  __USE_FILE_OFFSET64
114: #undef  __USE_BSD
115: #undef  __USE_SVID
116: #undef  __USE_MISC
117: #undef  __USE_ATFILE
118: #undef  __USE_GNU
119: #undef  __USE_REENTRANT
120: #undef  __USE_FORTIFY_LEVEL
121: #undef  __FAVOR_BSD
122: #undef  __KERNEL_STRICT_NAMES
123: 
124: /* Suppress kernel-name space pollution unless user expressedly asks
125:    for it.  */
126: #ifndef _LOOSE_KERNEL_NAMES
127: # define __KERNEL_STRICT_NAMES
128: #endif
129: 
130: /* Always use ISO C things.  */
131: #define __USE_ANSI      1
132: 
133: /* Convenience macros to test the versions of glibc and gcc.
134:    Use them like this:
135:    #if __GNUC_PREREQ (2,8)
136:    ... code requiring gcc 2.8 or later ...
137:    #endif
138:    Note - they won't work for gcc1 or glibc1, since the _MINOR macros
139:    were not defined then.  */
140: #if defined __GNUC__ && defined __GNUC_MINOR__
141: # define __GNUC_PREREQ(maj, min) \
142:         ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
143: #else
144: # define __GNUC_PREREQ(maj, min) 0
145: #endif
146: 
147: 
148: /* If _BSD_SOURCE was defined by the user, favor BSD over POSIX.  */
149: #if defined _BSD_SOURCE && \
150:     !(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \
151:       defined _XOPEN_SOURCE || defined _GNU_SOURCE || defined _SVID_SOURCE)
152: # define __FAVOR_BSD    1
153: #endif
154: 
155: /* If _GNU_SOURCE was defined by the user, turn on all the other features.  */
156: #ifdef _GNU_SOURCE
157: # undef  _ISOC95_SOURCE
158: # define _ISOC95_SOURCE 1
159: # undef  _ISOC99_SOURCE
160: # define _ISOC99_SOURCE 1
161: # undef  _POSIX_SOURCE
162: # define _POSIX_SOURCE  1
163: # undef  _POSIX_C_SOURCE
164: # define _POSIX_C_SOURCE        200809L
165: # undef  _XOPEN_SOURCE
166: # define _XOPEN_SOURCE  700
167: # undef  _XOPEN_SOURCE_EXTENDED
168: # define _XOPEN_SOURCE_EXTENDED 1
169: # undef  _LARGEFILE64_SOURCE
170: # define _LARGEFILE64_SOURCE    1
171: # undef  _BSD_SOURCE
172: # define _BSD_SOURCE    1
173: # undef  _SVID_SOURCE
174: # define _SVID_SOURCE   1
175: # undef  _ATFILE_SOURCE
176: # define _ATFILE_SOURCE 1
177: #endif
178: 
179: /* If nothing (other than _GNU_SOURCE) is defined,
180:    define _BSD_SOURCE and _SVID_SOURCE.  */
181: #if (!defined __STRICT_ANSI__ && !defined _ISOC99_SOURCE && \
182:      !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE && \
183:      !defined _XOPEN_SOURCE && !defined _BSD_SOURCE && !defined _SVID_SOURCE)
184: # define _BSD_SOURCE    1
185: # define _SVID_SOURCE   1
186: #endif
187: 
188: /* This is to enable the ISO C99 extension.  Also recognize the old macro
189:    which was used prior to the standard acceptance.  This macro will
190:    eventually go away and the features enabled by default once the ISO C99
191:    standard is widely adopted.  */
192: #if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE \
193:      || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
194: # define __USE_ISOC99   1
195: #endif
196: 
197: /* This is to enable the ISO C90 Amendment 1:1995 extension.  */
198: #if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE \
199:      || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L))
200: # define __USE_ISOC95   1
201: #endif
202: 
203: /* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2
204:    (and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined).  */
205: #if ((!defined __STRICT_ANSI__ || (_XOPEN_SOURCE - 0) >= 500) && \
206:      !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
207: # define _POSIX_SOURCE  1
208: # if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500
209: #  define _POSIX_C_SOURCE       2
210: # elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600
211: #  define _POSIX_C_SOURCE       199506L
212: # elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 700
213: #  define _POSIX_C_SOURCE       200112L
214: # else
215: #  define _POSIX_C_SOURCE       200809L
216: # endif
217: # define __USE_POSIX_IMPLICITLY 1
218: #endif
219: 
220: #if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE
221: # define __USE_POSIX    1
222: #endif
223: 
224: #if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE
225: # define __USE_POSIX2   1
226: #endif
227: 
228: #if (_POSIX_C_SOURCE - 0) >= 199309L
229: # define __USE_POSIX199309      1
230: #endif
231: 
232: #if (_POSIX_C_SOURCE - 0) >= 199506L
233: # define __USE_POSIX199506      1
234: #endif
235: 
236: #if (_POSIX_C_SOURCE - 0) >= 200112L
237: # define __USE_XOPEN2K          1
238: # undef __USE_ISOC95
239: # define __USE_ISOC95           1
240: # undef __USE_ISOC99
241: # define __USE_ISOC99           1
242: #endif
243: 
244: #if (_POSIX_C_SOURCE - 0) >= 200809L
245: # define __USE_XOPEN2K8         1
246: # undef  _ATFILE_SOURCE
247: # define _ATFILE_SOURCE 1
248: #endif
249: 
250: #ifdef  _XOPEN_SOURCE
251: # define __USE_XOPEN    1
252: # if (_XOPEN_SOURCE - 0) >= 500
253: #  define __USE_XOPEN_EXTENDED  1
254: #  define __USE_UNIX98  1
255: #  undef _LARGEFILE_SOURCE
256: #  define _LARGEFILE_SOURCE     1
257: #  if (_XOPEN_SOURCE - 0) >= 600
258: #   if (_XOPEN_SOURCE - 0) >= 700
259: #    define __USE_XOPEN2K8      1
260: #    define __USE_XOPEN2K8XSI   1
261: #   endif
262: #   define __USE_XOPEN2K        1
263: #   define __USE_XOPEN2KXSI     1
264: #   undef __USE_ISOC95
265: #   define __USE_ISOC95         1
266: #   undef __USE_ISOC99
267: #   define __USE_ISOC99         1
268: #  endif
269: # else
270: #  ifdef _XOPEN_SOURCE_EXTENDED
271: #   define __USE_XOPEN_EXTENDED 1
272: #  endif
273: # endif
274: #endif
275: 
276: #ifdef _LARGEFILE_SOURCE
277: # define __USE_LARGEFILE        1
278: #endif
279: 
280: #ifdef _LARGEFILE64_SOURCE
281: # define __USE_LARGEFILE64      1
282: #endif
283: 
284: #if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
285: # define __USE_FILE_OFFSET64    1
286: #endif
287: 
288: #if defined _BSD_SOURCE || defined _SVID_SOURCE
289: # define __USE_MISC     1
290: #endif
291: 
292: #ifdef  _BSD_SOURCE
293: # define __USE_BSD      1
294: #endif
295: 
296: #ifdef  _SVID_SOURCE
297: # define __USE_SVID     1
298: #endif
299: 
300: #ifdef  _ATFILE_SOURCE
301: # define __USE_ATFILE   1
302: #endif
303: 
304: #ifdef  _GNU_SOURCE
305: # define __USE_GNU      1
306: #endif
307: 
308: #if defined _REENTRANT || defined _THREAD_SAFE
309: # define __USE_REENTRANT        1
310: #endif
311: 
312: #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
313:     && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
314: # if _FORTIFY_SOURCE > 1
315: #  define __USE_FORTIFY_LEVEL 2
316: # else
317: #  define __USE_FORTIFY_LEVEL 1
318: # endif
319: #else
320: # define __USE_FORTIFY_LEVEL 0
321: #endif
322: 
323: /* Define __STDC_IEC_559__ and other similar macros.  */
324: #include <bits/predefs.h>
325: 
326: /* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1.  */
327: #define __STDC_ISO_10646__              200009L
328: 
329: /* This macro indicates that the installed library is the GNU C Library.
330:    For historic reasons the value now is 6 and this will stay from now
331:    on.  The use of this variable is deprecated.  Use __GLIBC__ and
332:    __GLIBC_MINOR__ now (see below) when you want to test for a specific
333:    GNU C library version and use the values in <gnu/lib-names.h> to get
334:    the sonames of the shared libraries.  */
335: #undef  __GNU_LIBRARY__
336: #define __GNU_LIBRARY__ 6
337: 
338: /* Major and minor version number of the GNU C library package.  Use
339:    these macros to test for features in specific releases.  */
340: #define __GLIBC__       2
341: #define __GLIBC_MINOR__ 15
342: 
343: #define __GLIBC_PREREQ(maj, min) \
344:         ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
345: 
346: /* Decide whether a compiler supports the long long datatypes.  */
347: #if defined __GNUC__ \
348:     || (defined __PGI && defined __i386__ ) \
349:     || (defined __INTEL_COMPILER && (defined __i386__ || defined __ia64__)) \
350:     || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
351: # define __GLIBC_HAVE_LONG_LONG 1
352: #endif
353: 
354: /* This is here only because every header file already includes this one.  */
355: #ifndef __ASSEMBLER__
356: # ifndef _SYS_CDEFS_H
357: #  include <sys/cdefs.h>
358: # endif
359: 
360: /* If we don't have __REDIRECT, prototypes will be missing if
361:    __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */
362: # if defined __USE_FILE_OFFSET64 && !defined __REDIRECT
363: #  define __USE_LARGEFILE       1
364: #  define __USE_LARGEFILE64     1
365: # endif
366: 
367: #endif  /* !ASSEMBLER */
368: 
369: /* Decide whether we can define 'extern inline' functions in headers.  */
370: #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
371:     && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \
372:     && defined __extern_inline
373: # define __USE_EXTERN_INLINES   1
374: #endif
375: 
376: /* There are some functions that must be declared 'extern inline' even with
377:    -Os when building LIBC, or they'll end up undefined.  */
378: #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
379:     && (defined _LIBC || !defined __OPTIMIZE_SIZE__) && !defined __NO_INLINE__ \
380:     && defined __extern_inline
381: # define __USE_EXTERN_INLINES_IN_LIBC   1
382: #endif
383: 
384: 
385: /* This is here only because every header file already includes this one.
386:    Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
387:    <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
388:    that will always return failure (and set errno to ENOSYS).  */
389: #include <gnu/stubs.h>
390: 
391: 
392: #endif  /* features.h  */
393: 


for client 3.15.156.140
© Andrew Scott 2006 - 2024,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/