close
Namespaces
Variants

C99

From cppreference.com
< c

ISO/IEC 9899:1999, a.k.a. C99, is a previous revision of the C standard.

Obsolete

Removed

  • Implicit int in declarations
  • Implicit function declarations

Deprecated

  • gets()

New language features

Feature test macros for optional features

New library features

New headers

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()
    • abs
    • div
    • div
  • 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)

Defect reports

Template:c/language/history/DR99

Compiler support

C99 core language features

C99 feature

 
Paper(s)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Universal-character-names in identifiers 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 N815
N601
N620
N638
N657
N694
N809
Yes partial Maybe
Flexible array members 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 1.21 N/A
Idempotent cvr-qualifiers N505 3.0 N/A
Trailing comma in enumerator-list 0.9 Yes Yes
Hexadecimal floating constants N308 2.8 Yes Yes
Compound literals N716 3.1 Yes Yes
Floating-point environment partial partial
Requiring truncation for divisions of signed integer types N617 0.9 N/A
Implicit return 0; in the main() function Yes Yes Yes
Declarations and statements in mixed order N740 3.0 Yes Yes
init-statement in for loops 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 3.1 Yes
Variadic macros N707 2.95 Yes Yes
_Pragma preprocessor operator N634 3.0 Yes partial*
Standard pragmas for floating-point evaluation N631
N696
No No
 

C99 feature
 

Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray