blob: 6d205aec8abc4a57430583780733ffb2d74eb80c (
plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
/* ****************************************************************************
* C features.
* ************************************************************************* */
/* This file turns the feature macros, defined by the compiler or by the
* user, into internal macros used by the library, in order to set the
* exact environment the user has specified.
*
* Here are the C-related feature macros:
*
* `__STDC__`:
* ISO Standard C compliance for the compiler.
* Should be 1; could be defined to 0 by the compiler.
*
* `__STDC_VERSION__`:
* ISO Standard C version for the compiler.
* (== 199409L) ISO C95;
* (== 199901L) ISO C99;
* (== 201112L) ISO C11.
*
* `__STRICT_ANSI__`:
* Strict ISO C conformance, enabled on GCC using `-ansi`.
* This also disables GNU compiler extensions.
*
* `_ISOC99_SOURCE`, `_ISOC11_SOURCE`:
* Extensions to ISO C89 from ISO C99 and ISO C11.
* Can be considered as hacks to the standard pre-defined macros testing.
*
* `__STDC_WANT_LIB_EXT2__`:
* Extensions to ISO C99 from TR 27431-2:2010.
*
* `__STDC_WANT_IEC_60559_BFP_EXT__`:
* Extensions to ISO C11 from TS 18661-1:2014.
*
* `__STDC_WANT_IEC_60559_FUNCS_EXT__`:
* Extensions to ISO C11 from TS 18661-4:2015.
*
* Here are the POSIX/SUS-related feature macros:
*
* `_POSIX_SOURCE`:
* IEEE Std 1003.1.
*
* `_POSIX_C_SOURCE`:
* (== 1) Equivalent to `_POSIX_SOURCE`;
* (>= 2) Add IEEE Std 1003.2;
* (>= 199309L) Add IEEE Std 1003.1b-1993;
* (>= 199506L) Add IEEE Std 1003.1c-1995;
* (>= 200112L) All of IEEE 1003.1-2004;
* (>= 200809L) All of IEEE 1003.1-2008.
*
* `_XOPEN_SOURCE`:
* Include POSIX and XPG elements.
* (== 500) Single Unix conformance is wanted;
* (== 600) Sixth revision;
* (== 700) Seventh revision.
*
* `_XOPEN_SOURCE_EXTENDED`:
* XPG and X/Open Unix extensions.
*
* `_LARGEFILE_SOURCE`:
* Some more functions for correct standard I/O.
*
* `_LARGEFILE64_SOURCE`:
* Additional functionnality from LFS for large files.
*
* `_FILE_OFFSET_BITS=N`:
* Select default filesystem interface.
*
* `_ATFILE_SOURCE`:
* Additional *at interfaces.
*
* `_GNU_SOURCE`:
* Add everything above, plus GNU extensions.
*
* `_DEFAULT_SOURCE`:
* The default set of features (taking precedence over `__STRICT_ANSI__`.
*
* `_FORTIFY_SOURCE`:
* Add security hardening to many library functions.
* Set to 1 or 2; 2 performs stricter checks than 1.
*
* `_REENTRANT`, `_THREAD_SAFE`:
* Obsolete; equivalent to `_POSIX_C_SOURCE=199506L. */
|