Spec-Zone.ru › GCC 6

6 Extensions to the C Language Family

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: As in Algol and Pascal, lexical scoping of functions.
• 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 integers—long 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.
• 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 Declarations: Mixing declarations 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.
• 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: Inquiring about the alignment of a type or variable.
• Inline: Defining inline functions (as fast as macros).
• 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.
• 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.
• Pointer Bounds Checker builtins: Built-in functions for Pointer Bounds Checker.
• Cilk Plus Builtins: Built-in functions for the Cilk Plus language extension.
• 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]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/C-Extensions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API