C99 - cppreference.com (2024)

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 incomplete
Reason: 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

  • gets()

[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] New headers

  • <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 incomplete
Reason: needs to list C compilers, verification
C99 featurePaper(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/A3.1YesYes
Increased translation limits N5900.9 N/A
// comments N6442.7YesYes
restrict pointers N4482.95Yespartial*
Enhanced arithmetic types N815
N601
N620
N638
N657
N694
N809
YespartialMaybe
Flexible array members N/A3.0YesYes
Variable-length array (VLA) types N6830.9Yes
Variably-modified (VM) types N2778 N/AYes
Designated initializers N4943.0YesYes
Non-constant initializers N/A1.21 N/A
Idempotent cvr-qualifiers N5053.0 N/A
Trailing comma in enumerator-list N/A0.9YesYes
Hexadecimal floating constants N3082.8YesYes
Compound literals N7163.1YesYes
Floating-point environment N/Apartialpartial
Requiring truncation for divisions of signed integer types N6170.9 N/A
Implicit return 0; in the main() function N/AYesYesYes
Declarations and statements in mixed order N7403.0YesYes
init-statement in for loops N/AYesYesYes
inline functions N7414.3YesYes
Predefined variable __func__ N6112.95YesYes
Cvr-qualifiers and static in [] within function declarations N/A3.1Yes
Variadic macros N7072.95YesYes
_Pragma preprocessor operator N6343.0Yespartial*
Standard pragmas for floating-point evaluation N631
N696
No NoYes

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

C99 - cppreference.com (2024)

References

Top Articles
Latest Posts
Article information

Author: Rob Wisoky

Last Updated:

Views: 5989

Rating: 4.8 / 5 (68 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Rob Wisoky

Birthday: 1994-09-30

Address: 5789 Michel Vista, West Domenic, OR 80464-9452

Phone: +97313824072371

Job: Education Orchestrator

Hobby: Lockpicking, Crocheting, Baton twirling, Video gaming, Jogging, Whittling, Model building

Introduction: My name is Rob Wisoky, I am a smiling, helpful, encouraging, zealous, energetic, faithful, fantastic person who loves writing and wants to share my knowledge and understanding with you.