You copied the Doc URL to your clipboard.

Preprocessing directives

Describes implementation-defined aspects of the ARM® C compiler and C library relating to preprocessing directives, as required by the ISO C standard.

The locations within #pragma directives where header name preprocessing tokens are recognized (6.4, 6.4.7).
The compiler does not support pragmas, which refer to headers.
How sequences in both forms of header names are mapped to headers or external source file names (6.4.7).
In both forms of the #include directive, the character sequences are mapped to external header names.
Whether the value of a character constant in a constant expression that controls conditional inclusion matches the value of the same character constant in the execution character set (6.10.1).
The value of a character constant in conditional inclusion expression is the same as the value of the same constant in the execution character set.
Whether the value of a single-character character constant in a constant expression that controls conditional inclusion may have a negative value (6.10.1).
Single-character constants in conditional inclusion expressions have non-negative values.
The places that are searched for an included < > delimited header, and how the places are specified or the header is identified (6.10.2).

If the character sequence begins with the / character, it is interpreted as an absolute path name.

Otherwise, the character sequence is interpreted as a file path, relative to one of the following directories:

  • The sequence of the directories, given via the -I command line option, in the command line order.
  • The include subdirectory in the compiler installation directory.
How the named source file is searched for in an included " " delimited header (6.10.2).

If the character sequence begins with the / character, it is interpreted as an absolute path name.

Otherwise, the character sequence interpreted as a file path, relative to the parent directory of the source file, which contains the #include directive.

The method by which preprocessing tokens (possibly resulting from macro expansion) in a #include directive are combined into a header name (6.10.2).

After macro replacement, the sequence of preprocessing tokens should be in one of the following two forms:

  • A single string literal. The escapes in the string are not processed and adjacent string literals are not concatenated. Then the rules for double-quoted includes apply.
  • A sequence of preprocessing tokens, starting with <' and terminating with >. Sequences of whitespace characters, if any, are replaced by a single space. Then the rules for angle-bracketed includes apply.
The nesting limit for #include processing (6.10.2).
There is no limit to the nesting level of files included with #include.
Whether the # operator inserts a \ character before the \ character that begins a universal character name in a character constant or string literal (6.10.3.2).
A \ character is inserted even before the \ character that begins a universal character name.
The behavior on each recognized non-standard C #pragma directive (6.10.6).
For the behavior of each non-standard C #pragma directive, see Chapter 5 Compiler-specific Pragmas.
The definitions for __DATE__ and __TIME__ when respectively, the date and time of translation are not available (6.10.8.1).
The date and time of the translation are always available on all supported platforms.
Was this page helpful? Yes No