67 * _STRICT_STDC __STDC__ is specified by the C Standards and defined
68 * by the compiler. For Sun compilers the value of
69 * __STDC__ is either 1, 0, or not defined based on the
70 * compilation mode (see cc(1)). When the value of
71 * __STDC__ is 1 and in the absence of any other feature
72 * test macros, the namespace available to the application
73 * is limited to only those symbols defined by the C
74 * Standard. _STRICT_STDC provides a more readable means
75 * of identifying symbols defined by the standard, or in
76 * the negative, symbols that are extensions to the C
77 * Standard. See additional comments for GNU C differences.
78 *
79 * _STDC_C99 __STDC_VERSION__ is specified by the C standards and
80 * defined by the compiler and indicates the version of
81 * the C standard. A value of 199901L indicates a
82 * compiler that complies with ISO/IEC 9899:1999, other-
83 * wise known as the C99 standard.
84 *
85 * _STDC_C11 Like _STDC_C99 except that the value of __STDC_VERSION__
86 * is 201112L indicating a compiler that compiles with
87 * ISO/IEXC 9899:2011, otherwise known as the C11 standard.
88 *
89 * _STRICT_SYMBOLS Used in cases where symbol visibility is restricted
90 * by the standards, and the user has not explicitly
91 * relaxed the strictness via __EXTENSIONS__.
92 */
93
94 #if defined(_XOPEN_SOURCE) || defined(_POSIX_C_SOURCE)
95 #define __XOPEN_OR_POSIX
96 #endif
97
98 /*
99 * ISO/IEC 9899:1990 and it's revisions, ISO/IEC 9899:1999 and ISO/IEC
100 * 99899:2011 specify the following predefined macro name:
101 *
102 * __STDC__ The integer constant 1, intended to indicate a conforming
103 * implementation.
104 *
105 * Furthermore, a strictly conforming program shall use only those features
106 * of the language and library specified in these standards. A conforming
107 * implementation shall accept any strictly conforming program.
419 /* CSTYLED */
420 # define _RESTRICT_KYWD restrict
421 #endif
422 #else
423 #define _RESTRICT_KYWD
424 #endif
425
426 /*
427 * The following macro defines a value for the ISO C11 _Noreturn
428 * keyword so that _NORETURN_KYWD resolves to "_Noreturn" if
429 * an ISO C11 compiler is used and "" (null string) if any other
430 * compiler is used. This allows for the use of single prototype
431 * declarations regardless of compiler version.
432 */
433 #if (defined(__STDC__) && defined(_STDC_C11)) && !defined(__cplusplus)
434 #define _NORETURN_KYWD _Noreturn
435 #else
436 #define _NORETURN_KYWD
437 #endif
438
439
440 /*
441 * The following macro indicates header support for the ANSI C++
442 * standard. The ISO/IEC designation for this is ISO/IEC FDIS 14882.
443 */
444 #define _ISO_CPP_14882_1998
445
446 /*
447 * The following macro indicates header support for the C99 standard,
448 * ISO/IEC 9899:1999, Programming Languages - C.
449 */
450 #define _ISO_C_9899_1999
451
452 /*
453 * The following macro indicates header support for the C99 standard,
454 * ISO/IEC 9899:2011, Programming Languages - C.
455 */
456 #define _ISO_C_9899_2011
457
458 /*
459 * The following macro indicates header support for DTrace. The value is an
460 * integer that corresponds to the major version number for DTrace.
461 */
462 #define _DTRACE_VERSION 1
463
464 #ifdef __cplusplus
465 }
466 #endif
467
468 #endif /* _SYS_FEATURE_TESTS_H */
|
67 * _STRICT_STDC __STDC__ is specified by the C Standards and defined
68 * by the compiler. For Sun compilers the value of
69 * __STDC__ is either 1, 0, or not defined based on the
70 * compilation mode (see cc(1)). When the value of
71 * __STDC__ is 1 and in the absence of any other feature
72 * test macros, the namespace available to the application
73 * is limited to only those symbols defined by the C
74 * Standard. _STRICT_STDC provides a more readable means
75 * of identifying symbols defined by the standard, or in
76 * the negative, symbols that are extensions to the C
77 * Standard. See additional comments for GNU C differences.
78 *
79 * _STDC_C99 __STDC_VERSION__ is specified by the C standards and
80 * defined by the compiler and indicates the version of
81 * the C standard. A value of 199901L indicates a
82 * compiler that complies with ISO/IEC 9899:1999, other-
83 * wise known as the C99 standard.
84 *
85 * _STDC_C11 Like _STDC_C99 except that the value of __STDC_VERSION__
86 * is 201112L indicating a compiler that compiles with
87 * ISO/IEC 9899:2011, otherwise known as the C11 standard.
88 *
89 * _STRICT_SYMBOLS Used in cases where symbol visibility is restricted
90 * by the standards, and the user has not explicitly
91 * relaxed the strictness via __EXTENSIONS__.
92 */
93
94 #if defined(_XOPEN_SOURCE) || defined(_POSIX_C_SOURCE)
95 #define __XOPEN_OR_POSIX
96 #endif
97
98 /*
99 * ISO/IEC 9899:1990 and it's revisions, ISO/IEC 9899:1999 and ISO/IEC
100 * 99899:2011 specify the following predefined macro name:
101 *
102 * __STDC__ The integer constant 1, intended to indicate a conforming
103 * implementation.
104 *
105 * Furthermore, a strictly conforming program shall use only those features
106 * of the language and library specified in these standards. A conforming
107 * implementation shall accept any strictly conforming program.
419 /* CSTYLED */
420 # define _RESTRICT_KYWD restrict
421 #endif
422 #else
423 #define _RESTRICT_KYWD
424 #endif
425
426 /*
427 * The following macro defines a value for the ISO C11 _Noreturn
428 * keyword so that _NORETURN_KYWD resolves to "_Noreturn" if
429 * an ISO C11 compiler is used and "" (null string) if any other
430 * compiler is used. This allows for the use of single prototype
431 * declarations regardless of compiler version.
432 */
433 #if (defined(__STDC__) && defined(_STDC_C11)) && !defined(__cplusplus)
434 #define _NORETURN_KYWD _Noreturn
435 #else
436 #define _NORETURN_KYWD
437 #endif
438
439 /* ISO/IEC 9899:2011 Annex K */
440 #if !defined(_STRICT_SYMBOLS)
441 #define __EXT1_VISIBLE 1
442 #else
443 #define __EXT1_VISIBLE 0
444 #endif
445
446 #if defined(__STDC_WANT_LIB_EXT1__)
447 #undef __EXT1_VISIBLE
448 #if __STDC_WANT_LIB_EXT1__
449 #define __EXT1_VISIBLE 1
450 #else
451 #define __EXT1_VISIBLE 0
452 #endif
453 #endif /* __STDC_WANT_LIB_EXT1__ */
454
455 /*
456 * The following macro indicates header support for the ANSI C++
457 * standard. The ISO/IEC designation for this is ISO/IEC FDIS 14882.
458 */
459 #define _ISO_CPP_14882_1998
460
461 /*
462 * The following macro indicates header support for the C99 standard,
463 * ISO/IEC 9899:1999, Programming Languages - C.
464 */
465 #define _ISO_C_9899_1999
466
467 /*
468 * The following macro indicates header support for the C11 standard,
469 * ISO/IEC 9899:2011, Programming Languages - C.
470 */
471 #define _ISO_C_9899_2011
472
473 /*
474 * The following macro indicates header support for the C11 standard,
475 * ISO/IEC 9899:2011 Annex K, Programming Languages - C.
476 */
477 #undef __STDC_LIB_EXT1__
478
479 /*
480 * The following macro indicates header support for DTrace. The value is an
481 * integer that corresponds to the major version number for DTrace.
482 */
483 #define _DTRACE_VERSION 1
484
485 #ifdef __cplusplus
486 }
487 #endif
488
489 #endif /* _SYS_FEATURE_TESTS_H */
|