Back to: C Tutorials For Beginners and Professionals
New Features in C Language
The C11 standard, officially known as ISO/IEC 9899:2011, introduced several notable features and improvements over the previous standard, C99. Some of these features include:
Multithreading Support: C11 added support for multi-threading by introducing the <threads.h> header. This includes thread creation and management functions, mutexes, condition variables, and thread-specific storage.
Generic Selection: A new keyword _Generic, allows for generic programming in C, enabling the creation of macros that behave differently based on the type of their argument.
Static Assertions: The _Static_assert keyword was introduced for compile-time assertions, useful for validating program assumptions during compilation.
Alignment Support: New functions and types were added to facilitate the alignment of objects. This includes the _Alignas and _Alignof keywords for specifying and determining the alignment of objects.
Anonymous Structures and Unions: Structures and unions can be declared so that their fields can be accessed directly without needing to use the structure or union tag.
Noreturn Function Attribute: The _Noreturn keyword specifies that a function does not return. This is mainly used for functions that always terminate the program, like exit() or abort().
Bounds-Checking Interfaces: New functions for safer, bounds-checked operations on strings and arrays were introduced to reduce the risk of buffer overflows.
Optional Support for Complex Arithmetic: Support for complex arithmetic, which was mandatory in C99, was made optional in C11.
Improved Unicode Support: C11 introduced new types and functions for handling Unicode characters, particularly UTF-16 and UTF-32 encoding forms.
Atomic Operations: The <stdatomic.h> header introduced support for atomic operations, which are crucial for writing concurrent code in multi-threaded environments.