You must know C++11, but have you noticed C11?

copyright (C) qingfeng Xia 2011-2020 CC-BY-NC 4.0

Previous C++ standard is C++03 (2003); previous C std is C99.They are not released together, but they did this time as  a combo of C11 and C++11.

__STDC_VERSION__ == 201112L

C11 (formerly C1X) is an informal name for ISO/IEC 9899:2011  (see wiki)


Changes from C99

The standard includes several changes to the C99 language and library specifications, such as:[8]

  • Alignment specification (_Alignas specifier, alignof operator, aligned_alloc function, <stdalign.h> header file)
  • The _Noreturn function specifier
  • Type-generic expressions using the _Generic keyword. For example, the following macro cbrt(x) translates to cbrtl(x), cbrt(x) or cbrtf(x) depending on the type of x:
#define cbrt(X) _Generic((X), long double: cbrtl, \
                              default: cbrt, \
                              float: cbrtf)(X)
  • Multithreading support (_Thread_local storage-class specifier, <threads.h> header including thread creation/management functions, mutex, condition variable and thread-specific storage functionality, as well as the _Atomic type qualifier and <stdatomic.h> for uninterruptible object access).
  • Improved Unicode support based on the C Unicode Technical Report ISO/IEC TR 19769:2004 (char16_t and char32_t types for storing UTF-16/UTF-32 encoded data, including conversion functions in <uchar.h> and the corresponding u and U string literal prefixes, as well as the u8 prefix for UTF-8 encoded literals).[9]
  • Removal of the gets() function, deprecated in the previous C language standard revision, ISO/IEC 9899:1999/Cor.3:2007(E), in favor of a new safe alternative, gets_s.
  • Bounds-checking interfaces (Annex K).[10]
  • Analyzability features (Annex L).
  • More macros for querying the characteristics of floating point types, concerning subnormal floating point numbers and the number of decimal digits the type is able to store.
  • Anonymous structures and unions, useful when unions and structures are nested, e.g. in struct T { int tag; union { float x; int n; }; };.
  • Static assertions, which are evaluated during translation at a later phase than #if and #error, when types are understood by the translator.
  • An exclusive create-and-open mode ("…x") for fopen. This behaves like O_CREAT|O_EXCL in POSIX, which is commonly used for lock files.
  • The quick_exit function as a third way to terminate a program, intended to do at least minimal deinitialization if termination with exit fails.[11]
  • Macros for the construction of complex values (partly because real + imaginary*I might not yield the expected value if imaginary is infinite or NaN).[12]


There is little new features compared with C99, that is why it is less reported than C++11.

C99, new features including:

  • Variable length arrays
  • Designated initializers
  • Type-generic math library
  • New datatypes: long long, _Complex, _Bool
  • restrict pointers
  • Intermingled declarations of variables
  • Inline functions
  • One-line comments that begin with //


Introduction of new features of C11 can be found here:


GCC 4.7 is a milestone for C++11 and  C11 support,  you can use

gcc -std=c11

g++ -std=c++11

C11 support status by GNU GCC can be found here.



#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <stddef.h> //size_t
#include <locale.h>
#include <limits.h>  // double is not supported
#include <float.h>  // isnan()  isinf()
// for a full list of std c headers:

// C99
#include <stdarg.h>  //va_list
#include <stdinttypes.h>
#include <complex.h>  //complex number
#include <tgmath.h>  //type generic math
#include <fenv.h>   // float exception
//C99 adopted into C++11
#include <stdbool.h>  // standarization into C++11
#include <stdint.h>  // standarization into C++11
#include <wctype.h>

//new headers from C11
//#include <uchar.h>  // not supported yet by mingw32 4.7
//#include <stdatomic.h>
//#include <stdalign.h>
//#include <stdnoreturn.h>
//#include <threads.h>

CC-BY-NC 4.0 licensed free for non-commercial usage
Author: Qingfeng XIA
copyright (C) 2011-2020
please keep the original link in your reference.
This entry was posted in Programming. Bookmark the permalink.