{ C }

C99

The ISO/IEC 9899:1999 standard that modernized C — the language that runs the world. From operating systems to embedded firmware, databases to compilers, C is the foundation everything else stands on.

ISO/IEC 9899:1999 Ratified 1999 TIOBE #1 – #2 Powers Every OS
52+
Years Old
#1
TIOBE Index (2024)
95%
OS Kernels in C
15B+
Devices Running C
The Standard That Defines Modern C

C99 (formally ISO/IEC 9899:1999) is the second major revision of the C programming language standard. Published in December 1999, it brought C into the modern era with inline functions, variable-length arrays, // comments, <stdbool.h>, <stdint.h>, restrict pointers, designated initializers, and much more.

C itself was created by Dennis Ritchie at Bell Labs between 1969 and 1973. It was designed as a systems programming language for Unix and has since become the most influential programming language in history. Every major operating system, every major database, every major compiler, and most embedded systems are written in C.

When people say "C," they usually mean C99 or its successors (C11, C17, C23). C99 is the version that standardized the features most C programmers use daily and is the default or near-default standard for GCC and Clang.

The Most Famous Program in History
// hello.c — The program that started it all
#include <stdio.h>

int main(void)
{
    printf("Hello, World!\n");
    return 0;
}

This program appeared in Kernighan & Ritchie's The C Programming Language (1978) and has been the traditional first program in virtually every programming language tutorial since. Compile with gcc -std=c99 hello.c -o hello.

What C99 Added to C
//
Line Comments
// comment syntax borrowed from C++. Before C99, only /* */ block comments were standard.
📐
Variable-Length Arrays
int arr[n]; where n is a runtime variable. Stack-allocated arrays with dynamic size.
🔗
inline Functions
The inline keyword for suggesting function inlining without macros.
{ }
Designated Initializers
int a[6] = { [4] = 29, [2] = 15 }; and .field = value for structs.
<T>
stdint.h
Fixed-width integers: int8_t, int16_t, int32_t, int64_t and unsigned variants.
bool
stdbool.h
bool, true, false — no more #define TRUE 1.
*
restrict Pointers
The restrict qualifier tells the compiler pointers don't alias, enabling aggressive optimization.
...
Variadic Macros
#define LOG(fmt, ...) fprintf(stderr, fmt, __VA_ARGS__)
0x
Compound Literals
(int[]){1,2,3} and (struct pt){.x=1, .y=2} as anonymous objects.
The Invisible Infrastructure

You are reading this page because of C. The browser is written in C/C++. The OS kernel is written in C. The network stack is written in C. The DNS resolver is written in C. The TLS library is written in C. The web server is written in C. The compiler that compiled all of them is written in C.

C is not a popular language. It is the foundational language. Languages come and go. Frameworks rise and fall. C endures because it occupies a unique position: it is the thinnest useful abstraction over hardware. Close enough to the machine to be fast. Abstract enough to be portable. Simple enough to be understood completely by one person.

Dive Deeper