Contents|Index|Previous|Next

Extensions to the C Language Family

GNU C provides several language features not found in ANSI standard C. (The option, ‘-pedantic’, 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 the extensions are also available in C++. See Extensions to the C++ Language for extensions that apply only to C++.

See the following documentation for more specific discussion regarding extensions to the C language family.

- STATEMENTS AND DECLARATIONS IN EXPRESSIONS
- LOCALLY DECLARED LABELS
- LABELS AS VALUES
- NESTED FUNCTIONS
- CONSTRUCTING FUNCTION CALLS
- NAMING AN EXPRESSION’S TYPE
- REFERRING TO A TYPE WITH typeof
- GENERALIZED LVALUES
- CONDITIONALS WITH OMITTED OPERANDS
- DOUBLE-WORD INTEGERS
- COMPLEX NUMBERS
- ARRAYS OF LENGTH ZERO
- ARRAYS OF VARIABLE LENGTH
- MACROS WITH VARIABLE NUMBERS OF ARGUMENTS
- NON-LVALUE ARRAYS MAY HAVE SUBSCRIPTS
- ARITHMETIC ON void- AND FUNCTION-POINTERS
- NON-CONSTANT INITIALIZERS
- CONSTRUCTOR EXPRESSIONS
- LABELED ELEMENTS IN INITIALIZERS

- Case Ranges
- Cast to a Union Type

- DECLARING ATTRIBUTES OF FUNCTIONS
- PROTOTYPES AND OLD-STYLE FUNCTION DEFINITIONS
- COMPILING FUNCTIONS FOR INTERRUPT CALLS

- C++ Style Comments
- Dollar Signs in Identifier Names
- The Character ESC in Constants

- INQUIRING ON ALIGNMENT OF TYPES OR VARIABLES

- Specifying Attributes of Variables
- Specifying Attributes of Types

- AN inline FUNCTION IS AS FAST AS A MACRO
- ASSEMBLER INSTRUCTIONS WITH C EXPRESSION OPERANDS
- CONSTRAINTS FOR asm OPERANDS

- Simple Constraints
- Multiple Alternative Constraints
- Constraint Modifier Characters
- Constraints for Particular Machines

- CONTROLLING NAMES USED IN ASSEMBLER CODE
- VARIABLES IN SPECIFIED REGISTERS

- Defining Global Register Variables
- Specifying Registers for Local Variables

- ALTERNATE KEYWORDS
- INCOMPLETE enum TYPES
- FUNCTION NAMES AS STRINGS

- Getting the Return or Frame Address of a Function