Major Changes in C99

From the Foreword of ISO/IEC 9899:1999, with emphasis added to selected items:
-- restricted character set support via digraphs and <iso646.h> (originally specified in AMD1)
-- wide character library support in <wchar.h> and <wctype.h> (originally specified in AMD1)
-- more precise aliasing rules via effective type
-- restricted pointers
-- variable-length arrays
-- flexible array members
-- static and type qualifiers in parameter array declarators
-- complex (and imaginary) support in <complex.h>
-- type-generic math macros in <tgmath.h>
-- the long long int type and library functions
-- increased minimum translation limits
-- additional floating-point characteristics in <float.h>
-- remove implicit int
-- reliable integer division
-- universal character names (\u and \U)
-- extended identifiers
-- hexadecimal floating-point constants and %a and %A printf/scanf conversion specifiers
-- compound literals
-- designated initializers
-- // comments
-- extended integer types and library functions in <inttypes.h> and <stdint.h>
-- remove implicit function declaration
-- preprocessor arithmetic done in intmax_t/uintmax_t
-- mixed declarations and code
-- new block scopes for selection and iteration statements
-- integer constant type rules
-- integer promotion rules
-- macros with a variable number of arguments
-- the vscanf family of functions in <stdio.h> and <wchar.h>
-- additional math library functions in <math.h>
-- floating-point environment access in <fenv.h>
-- IEC 60559 (also known as IEC 559 or IEEE arithmetic) support
-- trailing comma allowed in enum declaration
-- %lf conversion specifier allowed in printf
-- inline functions
-- the snprintf family of functions in <stdio.h>
-- boolean type in <stdbool.h>
-- idempotent type qualifiers
-- empty macro arguments
-- new struct type compatibility rules (tag compatibility)
-- additional predefined macro names
-- _Pragma preprocessing operator
-- standard pragmas
-- __func__ predefined identifier
-- va_copy macro
-- additional strftime conversion specifiers
-- LIA compatibility annex
-- deprecate ungetc at the beginning of a binary file
-- remove deprecation of aliased array parameters
-- conversion of array to pointer not limited to lvalues
-- relaxed constraints on aggregate and union initialization
-- relaxed restrictions on portable header names
-- return without expression not permitted in function that returns a value (and vice versa)