Keil™, An ARM® Company

RealView Compiler Reference Guide

Technical Support

On-Line Manuals

RealView Compiler Reference Guide

Preface
Introduction
Compiler Command-line Options
Language Extensions
Preprocessor extensions
#assert
#include_next
#unassert
#warning
C99 language features available in C90
// comments
Subscripting struct
Flexible array members
C99 language features available in C++ and C90
Variadic macros
long long
restrict
Hex floats
Standard C language extensions
Constant expressions
Array and pointer extensions
Block scope function declarations
Dollar signs in identifiers
Top‑level declarations
Benign redeclarations
External entities
Function prototypes
Standard C++ language extensions
? operator
Declaration of a class member
friend
Read/write constants
Scalar type constants
Type conversions
Standard C and standard C++ language extensions
Address of a register variable
Arguments to functions
Anonymous classes, structures and unions
Assembler labels
Empty declaration
Hexadecimal floating‑point constants
Incomplete enums
Integral type extensions
Label definitions
Long float
Non static local variables
Structure, union, enum, and bitfield extensions
GNU language extensions
Alternate keywords
asm keyword
Case ranges
Cast of a union
Character escape sequences
Compound literals
Designated inits
Conditionals
Initializers
Inline
Extended lvalues
Pointer arithmetic
Statement expressions
Unnamed fields
Compiler-specific Features
C and C++ Implementation Details
Via File Syntax
Standard C Implementation Definition
Standard C++ Implementation Definition
C and C++ Compiler Implementation Limits

Language Extensions

Chapter 3. Language Extensions

Table of Contents

3.1. Preprocessor extensions
3.1.1. #assert
3.1.2. #include_next
3.1.3. #unassert
3.1.4. #warning
3.2. C99 language features available in C90
3.2.1. // comments
3.2.2. Subscripting struct
3.2.3. Flexible array members
3.3. C99 language features available in C++ and C90
3.3.1. Variadic macros
3.3.2. long long
3.3.3. restrict
3.3.4. Hex floats
3.4. Standard C language extensions
3.4.1. Constant expressions
3.4.2. Array and pointer extensions
3.4.3. Block scope function declarations
3.4.4. Dollar signs in identifiers
3.4.5. Top‑level declarations
3.4.6. Benign redeclarations
3.4.7. External entities
3.4.8. Function prototypes
3.5. Standard C++ language extensions
3.5.1. ? operator
3.5.2. Declaration of a class member
3.5.3. friend
3.5.4. Read/write constants
3.5.5. Scalar type constants
3.5.6. Type conversions
3.6. Standard C and standard C++ language extensions
3.6.1. Address of a register variable
3.6.2. Arguments to functions
3.6.3. Anonymous classes, structures and unions
3.6.4. Assembler labels
3.6.5. Empty declaration
3.6.6. Hexadecimal floating‑point constants
3.6.7. Incomplete enums
3.6.8. Integral type extensions
3.6.9. Label definitions
3.6.10. Long float
3.6.11. Non static local variables
3.6.12. Structure, union, enum, and bitfield extensions
3.7. GNU language extensions
3.7.1. Alternate keywords
3.7.2. asm keyword
3.7.3. Case ranges
3.7.4. Cast of a union
3.7.5. Character escape sequences
3.7.6. Compound literals
3.7.7. Designated inits
3.7.8. Conditionals
3.7.9. Initializers
3.7.10. Inline
3.7.11. Extended lvalues
3.7.12. Pointer arithmetic
3.7.13. Statement expressions
3.7.14. Unnamed fields

This chapter describes the language extensions supported by the ARM compiler, and includes:

For additional reference material on the ARM compiler see also:

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0376A