Skip to main content

IAR Embedded Workbench for RX 5.20

J.3.11 Preprocessing directives

In this section:
Locations in #pragma for header names (6.4, 6.4.7)

These pragma directives take header names as parameters at the specified positions:

#pragma include_alias ("header", "header")
#pragma include_alias (<header>, <header>)
Mapping of header names (6.4.7)

Sequences in header names are mapped to source file names verbatim. A backslash '\' is not treated as an escape sequence. See Overview of the preprocessor.

Character constants in constant expressions (6.10.1)

A character constant in a constant expression that controls conditional inclusion matches the value of the same character constant in the execution character set.

The value of a single-character constant (6.10.1)

A single-character constant may only have a negative value if a plain character (char) is treated as a signed character, see ‑‑char_is_signed.

Including bracketed filenames (6.10.2)

For information about the search algorithm used for file specifications in angle brackets <>, see Include file search procedure.

Including quoted filenames (6.10.2)

For information about the search algorithm used for file specifications enclosed in quotes, see Include file search procedure.

Preprocessing tokens in #include directives (6.10.2)

Preprocessing tokens in an #include directive are combined in the same way as outside an #include directive.

Nesting limits for #include directives (6.10.2)

There is no explicit nesting limit for #include processing.

# inserts \ in front of \u (6.10.3.2)

# (stringify argument) inserts a \ character in front of a Universal Character Name (UCN) in character constants and string literals.

Recognized pragma directives (6.10.6)

In addition to the pragma directives described in Pragma directives, the following directives are recognized and will have an indeterminate effect. If a pragma directive is listed both in Pragma directives and here, the information provided in Pragma directives overrides the information here.

  • alias_def

  • alignment

  • alternate_target_def

  • baseaddr

  • building_runtime

  • can_instantiate

  • codeseg

  • cplusplus_neutral

  • cspy_support

  • cstat_dump

  • define_type_info

  • do_not_instantiate

  • early_dynamic_initialization

  • exception_neutral

  • function

  • function_category

  • function_effects

  • hdrstop

  • important_typedef

  • ident

  • implements_aspect

  • init_routines_only_for_needed_variables

  • initialization_routine

  • inline_template

  • instantiate

  • keep_definition

  • library_default_requirements

  • library_provides

  • library_requirement_override

  • memory

  • module_name

  • no_pch

  • no_vtable_use

  • once

  • pop_macro

  • preferred_typedef

  • push_macro

  • separate_init_routine

  • set_generate_entries_without_bounds

  • system_include

  • uses_aspect

  • warnings

Default __DATE__ and __TIME__ (6.10.8)

The definitions for __TIME__ and __DATE__ are always available.