Skip to content
AgileLogics
4 min read

The C Standard: C89 Through C23

Prerequisites: Undefined behavior & writing safer C

"C" isn't one fixed thing — it's an evolving ISO standard, and a compiler flag picks which version's rules apply:

  • C89/C90 ("ANSI C") — the original standardized version; variables had to be declared at the top of a block.
  • C99 — added // comments, variable declarations anywhere in a block, and <stdbool.h>.
  • C11 — added multithreading support (<threads.h>) and anonymous structs/unions.
  • C17 — a bugfix-only release with no new features; this course's baseline, and still the most universally-supported target today.
  • C23 — the newest standard, adding features like nullptr and improvements to enum and preprocessor support.
gcc -std=c17 program.c -o program

In practice, most real-world C code still targets C99 or C11 for maximum compatibility across compilers and platforms.