The C programming language has evolved over many years, and each major update is identified by a version number usually referring to the year the standard was published. The most well-known ones are C89, C99, C11, and C2x.
Below is a simple breakdown of all major versions:
K&R C (1978)
The original version of C, created by Dennis Ritchie (designer and implementer of the language) and Brian Kernighan (author of the reference book). Today, pure K&R C style is rarely seen; it looks “old” to most modern C programmers—similar to how Middle English feels to modern English readers.
C89 / ANSI C / C90
In 1989, ANSI released a standardized version of C.
In 1990, ISO published a nearly identical standard known as C90. This version defined the foundation for all future C standards.
C95
A lesser-known update that added wide-character support to C89.
C99
The first major revision of the language. Introduced many new features and improvements. Still widely used today.
C11
A big update that added:
Unicode support
Multithreading features
However, using C11-specific features may reduce compatibility with systems still stuck on C99.
C17 / C18
These are essentially bug-fix updates to C11. Although the release happened in 2018, the official name is C17. Both versions are interchangeable, but C17 is the preferred name.
C2x
The future of C! “2x” means the exact year is still unknown — but it’s the next upcoming standard.
Using Standards in GCC
You can choose which C standard to use with GCC using the -std= flag. For strict standard compliance, add -pedantic.
Examples:
gcc -std=c11 -pedantic foo.c gcc -Wall -Wextra -std=c2x -pedantic foo.c
The years are on the first few, but not after? It would help with context to have years on each.
I supposed it still valid, you just switched from 19xx to 20xx
deleted by creator


