In said:
I'm looking for information about C99 features. The standard from ANSI is
probably not what I need (reams and reams of standard-speak). I'd just like
a summary of each feature added: a couple sentences and a code fragment
would be perfect. Do you know of such a resource?
Not really, but the C99 foreword provides an outline:
5 This second edition cancels and replaces the first edition,
ISO/IEC 9899:1990, as amended and corrected by ISO/IEC
9899/COR1:1994, ISO/IEC 9899/AMD1:1995, and ISO/IEC
9899/COR2:1996. Major changes from the previous edition include:
- 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)
Although not obvious from this enumeration, the standard C99 library is
*much* larger than the standard C89 library.
Dan