C11

Dialect of programming language C

C11 is a standard of C programming language, also known as C1X (at development stage). Drafts of it were published in April and October 2011. It was officially accepted on December 8th, 2011 and numbered ISO/IEC 9899:2011.

Some features included in the standard are supported in gcc 4.6. Note that the standard allows compilers not to implement certain features, but they need to implement macros to let programs figure out whether each particular feature is supported or not.

Features introduced in this standard:

  • multithreading support (<threads.h> and <stdatomic.h>)
  • data alignment (a way to arrange data in memory to speed up access)
  • _Noreturn specifier (shows that the function will never return, so that code which processes it can be optimized)
  • type-generic expressions (_Generic), for example, a macro which translates to different expressions depending on the type of the argument
  • improved Unicode support
  • unsafe function gets (deprecated in C99) replaced with safe gets_s
  • added interfaces for checking boundary of array
  • analyzability features
  • macros for querying the characteristics of floating-point data types, concerning the number of decimal digits possible to store and subnormal numbers
  • anonymous structures and unions (useful when nested)
  • static assertions, checked at compile-time
  • exclusive create-and-open mode (“…x”) for fopen, used to lock files
  • quick_exit is a third way to terminate a program, intended to do minimal deinitializition
  • new macros for constructing complex values