Next: C++ Extensions, Previous: C++ Implementation, Up: Top [Contents][Index]
GNU C provides several language features not found in ISO standard C. (The -pedantic option directs GCC 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 GCC.
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++.
Some features that are in ISO C99 but not C90 or C++ are also, as extensions, accepted by GCC in C90 mode and in C++.
Statement Exprs: | Putting statements and declarations inside expressions. | |
Local Labels: | Labels local to a block. | |
Labels as Values: | Getting pointers to labels, and computed gotos. | |
Nested Functions: | Nested function in GNU C. | |
Nonlocal Gotos: | Nonlocal gotos. | |
Constructing Calls: | Dispatching a call to another function. | |
Typeof: | typeof : referring to the type of an expression. |
|
Conditionals: | Omitting the middle operand of a ?: expression. | |
__int128: | 128-bit integers__int128 . |
|
Long Long: | Double-word integerslong long int . |
|
Complex: | Data types for complex numbers. | |
Floating Types: | Additional Floating Types. | |
Half-Precision: | Half-Precision Floating Point. | |
Decimal Float: | Decimal Floating Types. | |
Hex Floats: | Hexadecimal floating-point constants. | |
Fixed-Point: | Fixed-Point Types. | |
Named Address Spaces: | Named address spaces. | |
Zero Length: | Zero-length arrays. | |
Empty Structures: | Structures with no members. | |
Variable Length: | Arrays whose length is computed at run time. | |
Variadic Macros: | Macros with a variable number of arguments. | |
Escaped Newlines: | Slightly looser rules for escaped newlines. | |
Subscripting: | Any array can be subscripted, even if not an lvalue. | |
Pointer Arith: | Arithmetic on void -pointers and function pointers. |
|
Variadic Pointer Args: | Pointer arguments to variadic functions. | |
Pointers to Arrays: | Pointers to arrays with qualifiers work as expected. | |
Initializers: | Non-constant initializers. | |
Compound Literals: | Compound literals give structures, unions or arrays as values. | |
Designated Inits: | Labeling elements of initializers. | |
Case Ranges: | case 1 ... 9 and such. | |
Cast to Union: | Casting to union type from any member of the union. | |
Mixed Labels and Declarations: | Mixing declarations, labels and code. | |
Function Attributes: | Declaring that functions have no side effects, or that they can never return. | |
Variable Attributes: | Specifying attributes of variables. | |
Type Attributes: | Specifying attributes of types. | |
Label Attributes: | Specifying attributes on labels. | |
Enumerator Attributes: | Specifying attributes on enumerators. | |
Statement Attributes: | Specifying attributes on statements. | |
Attribute Syntax: | Formal syntax for attributes. | |
Function Prototypes: | Prototype declarations and old-style definitions. | |
C++ Comments: | C++ comments are recognized. | |
Dollar Signs: | Dollar sign is allowed in identifiers. | |
Character Escapes: | \e stands for the character ESC. | |
Alignment: | Determining the alignment of a function, type or variable. | |
Inline: | Defining inline functions (as fast as macros). | |
Const and Volatile Functions : | GCC interprets these specially in C. | |
Volatiles: | What constitutes an access to a volatile object. | |
Using Assembly Language with C: | Instructions and extensions for interfacing C with assembler. | |
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. | |
Return Address: | Getting the return or frame address of a function. | |
Stack Scrubbing: | Stack scrubbing internal interfaces. | |
Vector Extensions: | Using vector instructions through built-in functions. | |
Offsetof: | Special syntax for implementing offsetof . |
|
__sync Builtins: | Legacy built-in functions for atomic memory access. | |
__atomic Builtins: | Atomic built-in functions with memory model. | |
Integer Overflow Builtins: | Built-in functions to perform arithmetics and arithmetic overflow checking. | |
x86 specific memory model extensions for transactional memory: | x86 memory models. | |
Object Size Checking: | Built-in functions for limited buffer overflow checking. | |
Other Builtins: | Other built-in functions. | |
Target Builtins: | Built-in functions specific to particular targets. | |
Target Format Checks: | Format checks specific to particular targets. | |
Pragmas: | Pragmas accepted by GCC. | |
Unnamed Fields: | Unnamed struct/union fields within structs/unions. | |
Thread-Local: | Per-thread variables. | |
Binary constants: | Binary constants using the 0b prefix. |
Next: C++ Extensions, Previous: C++ Implementation, Up: Top [Contents][Index]