Sorry, your browser is not supported. We recommend upgrading your browser.
We have done our best to make all the documentation and resources available on old versions of Internet Explorer, but vector image support and the layout may not be optimal. Technical documentation is available as a PDF Download.
k - armcc_user_guide ARM Compiler armcc User Guide
ARM Compiler armcc User Guide Version 5.05
You copied the Doc URL to your clipboard.
Language Extensions topics
Describes the language extensions that the compiler
The compiler supports several extensions to the preprocessor, including the #assert preprocessing extensions of System V release 4.
The #assert preprocessing extensions of System V release 4 are permitted. These enable definition and testing of predicate names.
This preprocessor directive is a variant of the #include directive. It searches for the named file only in the directories on the search path that follow the directory where the current source file is found, that is, the one containing the #include_next directive.
A predicate name can be deleted using a #unassert preprocessing directive.
The preprocessing directive #warning is supported. Like the #error directive, this produces a user-defined warning at compilation time. However, it does not halt compilation.
C99 language features available in C90
The compiler supports numerous extensions to the ISO C90 standard, for example, C99-style // comments. These extensions are available if the source language is C90 and you are compiling in nonstrict mode.
The character sequence // starts a one line comment, like in C99 or C++.
In C90, arrays that are not lvalues still decay to pointers, and can be subscripted.
In C90 and C++ you can declare a macro to accept a variable number of arguments.
The ARM compiler supports 64-bit integer types through the type specifiers long long and unsigned long long.
The restrict keyword is a C99 feature. It enables you to convey a declaration of intent to the compiler that different pointers and function parameter arrays do not point to overlapping regions of memory at runtime.
C90 and C++ support floating-point numbers that can be written in hexadecimal format.
Standard C language extensions
The compiler supports numerous extensions to the ISO C99 standard, for example, function prototypes that override old-style nonprototype definitions.
Type conversion between a pointer to an extern "C" function and a pointer to an extern "C++" function is permitted.
Standard C and Standard C++ language extensions
The compiler supports numerous extensions to both the ISO C99 and the ISO C++ Standards, such as various integral type extensions, various floating-point extensions, hexadecimal floating-point constants, and anonymous classes, structures, and unions.
Arguments to functions
Default arguments can be specified for function parameters other than those of a top-level function declaration. For example, they are accepted on typedef declarations and on pointer-to-function and pointer-to-member-function declarations.
GNU extensions to the C and C++ languages
GNU provides many extensions to the C and C++ languages, and the ARM compiler supports many of these extensions. In GNU mode, all the GNU extensions to the relevant source language are available. Some GNU extensions are also available when you compile in a nonstrict mode.