Using and Porting GNU CC - C Extensions

Node: C Extensions Next: C++ Extensions Prev: Installation Up: Top

Extensions to the C Language Family

GNU C provides several language features not found in ANSI standard C. (The `-pedantic' option directs GNU CC to print a warning message if any of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro __GNUC__ , which is always defined under GNU CC.

These extensions are available in C and Objective C. Most of them are also available in C++. See Extensions to the C++ Language, for extensions that apply only to C++.

Statement Exprs Putting statements and declarations inside expressions.
Local Labels Labels local to a statement-expression.
Labels as Values Getting pointers to labels, and computed gotos.
Nested Functions As in Algol and Pascal, lexical scoping of functions.
Constructing Calls Dispatching a call to another function.
Naming Types Giving a name to the type of some expression.
Typeof typeof : referring to the type of an expression.
Lvalues Using `?:', `,' and casts in lvalues.
Conditionals Omitting the middle operand of a `?:' expression.
Long Long Double-word integers---long long int .
Complex Data types for complex numbers.
Zero Length Zero-length arrays.
Variable Length Arrays whose length is computed at run time.
Macro Varargs Macros with variable number of arguments.
Subscripting Any array can be subscripted, even if not an lvalue.
Pointer Arith Arithmetic on void -pointers and function pointers.
Initializers Non-constant initializers.
Constructors Constructor expressions give structures, unions
or arrays as values.
Labeled Elements Labeling elements of initializers.
Cast to Union Casting to union type from any member of the union.
Case Ranges `case 1 ... 9' and such.
Function Attributes Declaring that functions have no side effects,
or that they can never return.
Function Prototypes Prototype declarations and old-style definitions.
Dollar Signs Dollar sign is allowed in identifiers.
Character Escapes `\e' stands for the character ESC.
Variable Attributes Specifying attributes of variables.
Type Attributes Specifying attributes of types.
Alignment Inquiring about the alignment of a type or variable.
Inline Defining inline functions (as fast as macros).
Extended Asm Assembler instructions with C expressions as operands.
(With them you can define ``built-in'' functions.)
Asm Labels Specifying the assembler name to use for a C symbol.
Explicit Reg Vars Defining variables residing in specified registers.
Alternate Keywords __const__ , __asm__ , etc., for header files.
Incomplete Enums enum foo; , with details to follow.
Function Names Printable strings which are the name of the current
function.


Next: C++ Extensions Up: Top