cppreference.com
Create account Namespaces
Variants
Views
Actions
C99 From cppreference.com
< c C
Compiler support |
Language |
Headers |
Type support |
Program utilities |
Variadic function support |
Error handling |
Dynamic memory management |
Strings library |
Algorithms |
Numerics |
Date and time utilities |
Input/output support |
Localization support |
Concurrency support (C11) |
Technical Specifications |
Symbol index |
[edit] Versions
C89 |
C95 |
C99 |
C11 |
C17 |
C23 |
Current Status |
[edit] ISO/IEC 9899:1999, a.k.a. C99, is a previous revision of the C standard.
This section is incompleteReason: core/library features, TC1~TC3, DRs |
Contents - 1 Obsolete
- 1.1 Removed
- 1.2 Deprecated
- 2 New language features
- 2.1 Feature test macros for optional features
- 3 New library features
- 3.1 New headers
- 3.2 Library features
- 4 Defect reports
- 5 Compiler support
- 5.1 C99 core language features
|
[edit] Obsolete
[edit] Removed
- Implicit int in declarations
- Implicit function declarations
[edit] Deprecated
[edit] 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 initializers
- 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
- STDC FENV_ACCESS
- STDC FP_CONTRACT
- STDC CX_LIMITED_RANGE
[edit] 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.
[edit] New library features
[edit]
- <complex.h>
- <fenv.h>
- <inttypes.h>
- <stdbool.h>
- <stdint.h>
- <tgmath.h>
[edit] Library features
- Aliases for integer types
- Integer types with exact width (intN_t and uintN_t)
- Fastest integer types with at least given width (int_fastN_t and uint_fastN_t)
- Smallest integer types with at least given width (int_leastN_t and uint_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)
- Operations on long long and intmax_t
- llabs()
- imaxabs()
- lldiv()
- imaxdiv()
- Floating-point environment access
- Extended floating-point math functions
- New floating-point math functions
- -f and -l variants 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
- atoll()
- strtoimax()
- strtoll()
- strtoull
- strtoumax()
- wcstoimax()
- wcstoll()
- wcstoull()
- wcstoumax()
- isblank() and iswblank()
- snprintf() and vsnprintf()
- vfscanf() and vfwscanf() function families
- Extensions for fscanf() and fprintf() function families
- ll length modifier for long long and unsigned long long
- hh length modifier for signed char and unsigned char
- l length modifier for double
- z length modifier for size_t and its signed version
- t length modifier for ptrdiff_t and its unsigned version
- j length modifier for intmax_t and uintmax_t
- a conversion 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)
[edit] Defect reports
Template:c/language/history/DR99
[edit] Compiler support
[edit] C99 core language features
This section is incompleteReason: needs to list C compilers, verification |
C99 feature | Paper(s) | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XL C++ | IBM Open XL C++ for AIX | IBM Open XL C++ for z/OS | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Nvidia HPC C++ (ex PGI)* | Nvidia nvcc |
Universal-character-names in identifiers | N/A | 3.1 | Yes | Yes |
Increased translation limits | N590 | 0.9 | N/A |
// comments | N644 | 2.7 | Yes | Yes |
restrict pointers | N448 | 2.95 | Yes | partial* |
Enhanced arithmetic types | N815N601N620N638N657N694N809 | Yes | partial | Maybe |
Flexible array members | N/A | 3.0 | Yes | Yes |
Variable-length array (VLA) types | N683 | 0.9 | Yes |
Variably-modified (VM) types | N2778 | N/A | Yes |
Designated initializers | N494 | 3.0 | Yes | Yes |
Non-constant initializers | N/A | 1.21 | N/A |
Idempotent cvr-qualifiers | N505 | 3.0 | N/A |
Trailing comma in enumerator-list | N/A | 0.9 | Yes | Yes |
Hexadecimal floating constants | N308 | 2.8 | Yes | Yes |
Compound literals | N716 | 3.1 | Yes | Yes |
Floating-point environment | N/A | partial | partial |
Requiring truncation for divisions of signed integer types | N617 | 0.9 | N/A |
Implicit return 0; in the main() function | N/A | Yes | Yes | Yes |
Declarations and statements in mixed order | N740 | 3.0 | Yes | Yes |
init-statement in for loops | N/A | Yes | Yes | Yes |
inline functions | N741 | 4.3 | Yes | Yes |
Predefined variable __func__ | N611 | 2.95 | Yes | Yes |
Cvr-qualifiers and static in [] within function declarations | N/A | 3.1 | Yes |
Variadic macros | N707 | 2.95 | Yes | Yes |
_Pragma preprocessor operator | N634 | 3.0 | Yes | partial* |
Standard pragmas for floating-point evaluation | N631N696 | No | No | Yes |
C99 feature | Paper(s) | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XL C++ | IBM Open XL C++ for AIX | IBM Open XL C++ for z/OS | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Nvidia HPC C++ (ex PGI)* | Nvidia nvcc |
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/99&oldid=140860" Category:
Navigation
- Support us
- Recent changes
- FAQ
- Offline version
Toolbox
- What links here
- Related changes
- Upload file
- Special pages
- Printable version
- Permanent link
- Page information
- العربية
- Česky
- Deutsch
- Español
- Français
- Italiano
- 日本語
- 한국어
- Polski
- Português
- Русский
- Türkçe
- 中文