C99
From cppreference.com
< c
ISO/IEC 9899:1999, a.k.a. C99, is a previous revision of the C standard.
| This section is incomplete Reason: core/library features, TC1~TC3, DRs |
Obsolete
Removed
- Implicit int in declarations
- Implicit function declarations
Deprecated
New language features
- Universal-character-names in identifiers
- Increased translation limits
- // comments
- restrict pointers
- Enhanced arithmetic types
- _Bool
- long long and unsigned long long
- Extended integer types
- _Complex types (float _Complex, double _Complex, and long double _Complex)
- _Imaginary types (float _Imaginary, double _Imaginary, and long double _Imaginary)
- Flexible array members
- Variable-length array (VLA) types and variably-modified (VM) types
- Improvements of braced-init-list for array, struct and union types
- Non-constant initializers
- Designated initialzers
- Idempotent cvr-qualifiers
- Trailing comma in enumerator-list
- Hexadecimal floating constants
- Compound literals
- Floating-point environment
- Requiring truncation for divisions of signed integer types
- Implicit return 0; in the
main()function - Declarations and statements in mixed order
- init-statement in for loops
- inline functions
- Predefined variable __func__
- Cvr-qualifiers and static in [] within function declarations
- Variadic macros
- _Pragma preprocessor operator
- Standard pragmas for floating-point evaluation
-
STDCFENV_ACCESS -
STDCFP_CONTRACT -
STDCCX_LIMITED_RANGE
-
Feature test macros for optional features
- __STDC_IEC_559__
- Indicates IEEE-754 binary floating-point arithmetic and required math functions are supported.
- __STDC_IEC_559_COMPLEX__
- Indicates IEEE-754 complex arithmetic and required math functions are supported.
- __STDC_HOSTED__
- Indicates that the implementation is hosted.
- __STDC_ISO_10646__
- Indicates that Unicode is used by the wide literal encodings and expands to the latest supported revision.
- __STDC_MB_MIGHT_NEQ_WC__
- Indicates that there are some characters in the basic character set having different code unit values in ordinary and wide literal encodings.
New library features
New headers
-
<complex.h> -
<fenv.h> -
<inttypes.h> -
<stdbool.h> -
<stdint.h> -
<tgmath.h>
Library features
- Aliases for integer types
- Integer types with exact width (
intN_tanduintN_t) - Fastest integer types with at least given width (
int_fastN_tanduint_fastN_t) - Smallest integer types with at least given width (
int_leastN_tanduint_leastN_t) - Integer types capable for cast between object pointers (intptr_t and uintptr_t)
- Integer types with maximum width (intmax_t and uintmax_t)
- Integer types with exact width (
- Operations on long long and intmax_t
- Floating-point environment access
- Extended floating-point math functions
- New floating-point math functions
- -
fand -lvariants for existing and new floating-point math functions - Math error handling
- Complex functions
- _Exit()
- Formatting support for long long, unsigned long long, intmax_t, and uintmax_t
- isblank() and iswblank()
- snprintf() and vsnprintf()
- vfscanf() and vfwscanf() function families
- Extensions for fscanf() and fprintf() function families
-
lllength modifier for long long and unsigned long long -
hhlength modifier for signed char and unsigned char -
llength modifier for double -
zlength modifier for size_t and its signed version -
tlength modifier for ptrdiff_t and its unsigned version -
jlength modifier for intmax_t and uintmax_t -
aconversion specifier for floating-point types
-
- Numeric limit macros for long long and unsigned long long
- Numeric limit macros corresponding to existing and new aliases for integer types
- Format string macros for integer types
- va_copy
- Type-generic math macros
- Floating-point comparison macros
- Floating-point classification macros
- Compatibility macros for _Bool (bool, true, and false)
Defect reports
Template:c/language/history/DR99