Summary

Standard Status Rough % One-line take

C89 / C90

Essentially complete

~99%

Everything but trigraphs.

C95 (NA1)

Mostly complete

~90%

Digraphs missing; wide-char/<iso646.h> come from the system.

C99

Near-complete

~97%

_Imaginary type + digraphs missing.

C11/C17

Near-complete

~95%

Atomics, _Generic, _Static_assert, TLS, alignment are supported.

C23

Partial

~60%

Core keywords/constexpr/fixed-enums supported. Still many missing features.

GNU C

Broad

~90%

Stmt-exprs, typeof, int128, attribute__, 400+ builtins, inline asm + asm goto.

Clang / Apple

Broad

~90%

Blocks (Darwin), _has*, nullability, availability, Clang builtins.

-std= accepts c89/c90/gnu89, c99/gnu99, c11/gnu11, c17/gnu17, c23/gnu23/c2x.

With no -std, C mode behaves as C11 (STDC_VERSION = 201112L).

C23 Language Support (on-going)

Implemented:

  • nullptr / nullptr_t; true/false/bool as keywords.

  • static_assert keyword and single-argument _Static_assert(cond).

  • constexpr object declarations (default-on gate).

  • Enumerations with a fixed underlying type: enum E : int { … }.

  • Binary literals 0b…; u8 character constants; empty initializer {}.

  • [[deprecated]], [[nodiscard]], [[maybe_unused]], [[noreturn]], namespaced [[gnu::…]].

  • __has_include; typeof.

Missing:

  • _BitInt(N), _Decimal32/64/128.

  • VA_OPT, #embed, #elifdef/#elifndef, has_c_attribute, has_embed.

  • Digit separators (1'000'000).

  • typeof_unqual; C23 auto type inference (only the GNU __auto_type spelling).

  • unreachable() macro (only __builtin_unreachable); [[reproducible]]/[[unsequenced]].

  • [[fallthrough]] is parsed but not enforced.

GNU C extensions

  • Statement expressions ({ … }); computed goto *p and &&label; label.

  • GNU case 1 …​ 5: ranges; typeof/typeof; auto_type; int128.

  • attribute — large catalog incl. packed, aligned, cleanup (full RAII), vector_size, format, visibility, section, constructor/destructor.

  • ~439 _builtin* (varargs, overflow, bit/byte, ~370 math, memory/string, hints).

  • Inline asm: basic, extended (outputs/inputs/clobbers/symbolic names/tied), asm goto, asm volatile, file-scope asm.

  • __thread, __extension__, GNU ##__VA_ARGS__.

  • Missing / buggy: nested functions (none, will likely never be implemented like Clang); __builtin_shufflevector and __builtin_va_arg_pack are stubs; L ## "x" wide-string paste is broken.

Clang / Apple extensions

  • Apple Blocks ^{ } + __block (Darwin targets, -fblocks).

  • __has_feature, __has_builtin, __has_attribute; Clang builtins and __c11_atomic_*.

  • Nullability qualifiers (_Nonnull/_Nullable), availability(…​) attribute, __builtin_convertvector.

  • Clang-persona driver mode for build-system compatibility.