Whole document tree
    

Whole document tree

Using the GNU Compiler Collection: C Extensions
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4. 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 section Extensions to the C++ Language, for extensions that apply only to C++.

4.1 Statements and Declarations in Expressions  Putting statements and declarations inside expressions.
4.2 Locally Declared Labels  Labels local to a statement-expression.
4.3 Labels as Values  Getting pointers to labels, and computed gotos.
4.4 Nested Functions  As in Algol and Pascal, lexical scoping of functions.
4.5 Constructing Function Calls  Dispatching a call to another function.
4.6 Naming an Expression's Type  Giving a name to the type of some expression.
4.7 Referring to a Type with typeof  typeof: referring to the type of an expression.
4.8 Generalized Lvalues  Using `?:', `,' and casts in lvalues.
4.9 Conditionals with Omitted Operands  Omitting the middle operand of a `?:' expression.
4.10 Double-Word Integers  Double-word integers---long long int.
4.11 Complex Numbers  Data types for complex numbers.
4.12 Hex Floats  Hexadecimal floating-point constants.
4.13 Arrays of Length Zero  Zero-length arrays.
4.14 Arrays of Variable Length  Arrays whose length is computed at run time.
4.15 Macros with Variable Numbers of Arguments  Macros with variable number of arguments.
4.16 Non-Lvalue Arrays May Have Subscripts  Any array can be subscripted, even if not an lvalue.
4.17 Arithmetic on void- and Function-Pointers  Arithmetic on void-pointers and function pointers.
4.18 Non-Constant Initializers  Non-constant initializers.
4.19 Constructor Expressions  Constructor expressions give structures, unions or arrays as values.
4.20 Labeled Elements in Initializers  Labeling elements of initializers.
4.22 Cast to a Union Type  Casting to union type from any member of the union.
4.21 Case Ranges  `case 1 ... 9' and such.
4.23 Declaring Attributes of Functions  Declaring that functions have no side effects, or that they can never return.
4.24 Prototypes and Old-Style Function Definitions  Prototype declarations and old-style definitions.
4.25 C++ Style Comments  C++ comments are recognized.
4.26 Dollar Signs in Identifier Names  Dollar sign is allowed in identifiers.
4.27 The Character ESC in Constants  `\e' stands for the character ESC.
4.29 Specifying Attributes of Variables  Specifying attributes of variables.
4.30 Specifying Attributes of Types  Specifying attributes of types.
4.28 Inquiring on Alignment of Types or Variables  Inquiring about the alignment of a type or variable.
4.31 An Inline Function is As Fast As a Macro  Defining inline functions (as fast as macros).
4.32 Assembler Instructions with C Expression Operands  Assembler instructions with C expressions as operands.
                         (With them you can define "built-in" functions.)
4.33 Constraints for asm Operands  Constraints for asm operands
4.34 Controlling Names Used in Assembler Code  Specifying the assembler name to use for a C symbol.
4.35 Variables in Specified Registers  Defining variables residing in specified registers.
4.36 Alternate Keywords  __const__, __asm__, etc., for header files.
4.37 Incomplete enum Types  enum foo;, with details to follow.
4.38 Function Names as Strings  Printable strings which are the name of the current function.
4.39 Getting the Return or Frame Address of a Function  Getting the return or frame address of a function.
4.40 Other built-in functions provided by GNU CC  Other built-in functions.
4.41 Deprecated Features  Things might disappear from g++.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated by root on January, 30 2002 using texi2html