ISO/IEC 9899:1999, a.k.a. C99, is a previous revision of the C standard.
int in declarations // comments restrict pointers _Bool long long and unsigned long long _Complex types (float _Complex, double _Complex, and long double _Complex) _Imaginary types (float _Imaginary, double _Imaginary, and long double _Imaginary) return 0; in the main() function for loops inline functions __func__ static in [] within function declarations _Pragma preprocessor operator STDC FENV_ACCESS STDC FP_CONTRACT STDC CX_LIMITED_RANGE __STDC_IEC_559__ __STDC_IEC_559_COMPLEX__ __STDC_HOSTED__ __STDC_ISO_10646__ __STDC_MB_MIGHT_NEQ_WC__ intN_t and uintN_t) int_fastN_t and uint_fastN_t) int_leastN_t and uint_leastN_t) intptr_t and uintptr_t) intmax_t and uintmax_t) long long and intmax_t  f and -l variants for existing and new floating-point math functions _Exit() long long, unsigned long long, intmax_t, and uintmax_t  isblank() and iswblank() snprintf() and vsnprintf() vfscanf() and vfwscanf() function families 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 long long and unsigned long long va_copy _Bool (bool, true, and false) Template:c/language/history/DR99
| 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 | ||||||||||||
| restrictpointers | N448 | 2.95 | Yes | partial* | ||||||||||||
| Enhanced arithmetic types | N815 N601 N620 N638 N657 N694 N809 | 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 themain()function | N/A | Yes | Yes | Yes | ||||||||||||
| Declarations and statements in mixed order | N740 | 3.0 | Yes | Yes | ||||||||||||
| init-statement in forloops | N/A | Yes | Yes | Yes | ||||||||||||
| inlinefunctions | N741 | 4.3 | Yes | Yes | ||||||||||||
| Predefined variable __func__ | N611 | 2.95 | Yes | Yes | ||||||||||||
| Cvr-qualifiers and staticin[]within function declarations | N/A | 3.1 | Yes | |||||||||||||
| Variadic macros | N707 | 2.95 | Yes | Yes | ||||||||||||
| _Pragmapreprocessor operator | N634 | 3.0 | Yes | partial* | ||||||||||||
| Standard pragmas for floating-point evaluation | N631 N696 | 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 | 
    © cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
    https://en.cppreference.com/w/c/99