(gcc.info)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 in the languages derived from
it, C++ and Objective C.  Note: Extensions to the C++ Language
Extensions, 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.
* 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.

automatically generated by info2www