22.4 Predefined Macros
The compiler provides a number of macro definitions that characterize the various target-specific options and other aspects of the compiler and host environment. Some of these are listed in the table below.
See also the device-specific include files
(pic32c/include/proc/family/device.h
)
for other macros that can be used to determine the features available on the selected
device. You will find these macros near the end of the header file.
You can also run the compiler with the -E
and -dM
options
to have it print out those macros defined for that particular project and set of compiler
options.
Macro | Meaning |
---|---|
__PIC32C
|
Defined when a PIC32CX device is specified
with the -mprocessor option. Always defined when targeting a
PIC32C/SAM device. |
__PIC32CZ |
Defined when a PIC32CZ device is specified
with the -mprocessor option. |
__LANGUAGE_ASSEMBLY
|
Defined if compiling a pre-processed assembly file (.S files). |
LANGUAGE_ASSEMBLY |
Defined if compiling a pre-processed assembly
file (.S files) and -ansi is not specified. |
__LANGUAGE_C
|
Defined if compiling a C file. |
LANGUAGE_C |
Defined if compiling a C file and
-ansi is not specified. |
__LANGUAGE_C_PLUS_PLUS
|
Defined if compiling a C++ file. |
__EXCEPTIONS |
Defined if C++ exceptions are enabled. |
__GXX_RTTI |
Defined if runtime type information is enabled. |
__PROCESSOR__ |
Where
is
the capitalized argument to the -mprocessor option. For
example, when using -mprocessor=32CX0525SG12144 , the compiler
will define __32CX05255SG12144__ . |
__XC |
Always defined to indicate that this is a Microchip XC compiler. |
__XC32 |
Always defined to indicate this the XC32 compiler. |
__VERSION__ |
The __VERSION__ macro
expands to a string constant describing the compiler in use. Do not rely on its
contents having any particular form, but it should contain at least the release
number. Use the __XC32_VERSION macro for a numeric version
number. |
__XC32_VERSION or
__C32_VERSION__ |
The C compiler defines the constant
__XC32_VERSION , giving a numeric value to the version
identifier. This macro can be used to construct applications that take
advantage of new compiler features while still remaining backward compatible
with older versions. The value is based upon the major and minor version
numbers of the current release. For example, release version 1.03 will have a
__XC32_VERSION definition of 1030. This macro can be used,
in conjunction with standard preprocessor comparison statements, to
conditionally include/exclude various code constructs. |
__arm__ |
Defined when compiling for ARM architectures, regardless of whether generating Thumb or ARM code. |
__thumb__ |
Defined to indicate the compiler is
generating Thumb code. This definition is subject to the
-mthumb and -marm options. |
__thumb2__ |
Defined when generating Thumb code for a target processor supporting the Thumb-2 instruction set. |
__SOFTFP__ |
Defined when compiling for software
floating-point, i.e. when -mfloat-abi=soft is in
effect. |
__ARM_FP |
Defined to an integer mask describing the floating-point capability of the current target processor. This is 0 when software floating point is in effect. Otherwise, bits 1, 2 and 3 of the mask are set to indicate support for 16, 32 and 64-bit hardware floating point, respectively. |
__XC32_DTCM_LENGTH |
Defined to be the size (in bytes) of the data tightly coupled
memory specified by the -mdtcm option. |
__XC32_ITCM_LENGTH |
Defined to be the size (in bytes) of the instruction tightly
coupled memory specified by the -mitcm option. |
__XC32_TCM_LENGTH |
Defined to be the size (in bytes) of the combined tightly
coupled memory specified by the -mtcm option. |