| GNU C Language Extensions

This part of the documentation is a modified version of the C Extensions section of the GCC Manual. Therefore it is licensed under the GNU Free Documentation License.
TIGCC (like all GNU C compilers) provides several language features not found in ISO standard C. To test for the availability of these features in conditional compilation, check for a predefined macro `__GNUC__`, which is always defined under GCC.
Some features that are in ISO C99 but not C89 are also, as extensions, accepted by GCC in C89 mode.

- Statements and Declarations in Expressions
- Locally Declared Labels
- Labels as Values
- Nested Functions
- Constructing Function Calls
- Referring to a Type with 'typeof'
- Generalized Lvalues
- Conditionals with Omitted Operands
- Double-Word Integers
- Complex Numbers
- Hex Floats
- Binary Numbers
- Structures With No Members
- Arrays of Length Zero
- Arrays of Variable Length
- Macros with a Variable Number of Arguments
- Non-Lvalue Arrays May Have Subscripts
- Arithmetic on void and Function Pointers
- Non-Constant Initializers
- Compound Literals (Cast Constructors)
- Designated Initializers
- Cast to a Union Type
- Case Ranges
- Specifying Attributes of Functions
- Specifying Attributes of Variables
- Specifying Attributes of Types
- Attribute Syntax
- Prototypes and Old-Style Function Definitions
- C++ Style Comments
- Dollar Signs in Identifier Names
- Escape Character in Constants
- Inquiring on Alignment of Types or Variables
- Inline Functions
- Inline Assembler
- Controlling Names Used in Assembler Code
- Variables in Specified Registers
- Alternate Keywords
- Incomplete 'enum' Types
- Function Names as Strings
- Getting the Return or Frame Address of a Function
- Other built-in functions provided by GCC
- Slightly Looser Rules for Escaped Newlines
- String Literals with Embedded Newlines
- Mixed Declarations and Code
- Unnamed struct/union Fields within structs/unions
- Definite Access of Volatile Objects
- History
- GNU General Public License
- GNU Free Documentation License
- Funding Free Software

Original author: Free Software Foundation, Inc.
Authors of the modifications: Zeljko Juric, Sebastian Reichelt, and Kevin Kofler
Published by the TIGCC Team.
See the History section for details and copyright information.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being "GNU General Public License" and "Funding Free Software", the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled "GNU Free Documentation License".
(a) The FSF's Front-Cover Text is:
A GNU Manual
(b) The FSF's Back-Cover Text is:
You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development.