Microchip Technology SW006023-1N Data Sheet

Page of 238
Common C Interface
 2012 Microchip Technology Inc.
DS51686E-page 41
2.5.15
Manifest Macros
The CCI defines the general form for macros that manifest the compiler and target 
device characteristics. These macros can be used to conditionally compile alternate 
source code based on the compiler or the target device.
The macros and macro families are details in Table 2-1.
2.5.15.1
EXAMPLE
The following shows code which is conditionally compiled dependent on the device 
having EEPROM memory.
#ifdef __XC16__
void __interrupt(__auto_psv__) myIsr(void)
#else
void __interrupt(low_priority) myIsr(void)
#endif
2.5.15.2
DIFFERENCES
Some of these CCI macros are new (for example __CCI__), and others have different 
names to previous symbols with identical meaning (for example __18F452 is now 
__18F452__
).
2.5.15.3
MIGRATION TO THE CCI
Any code which uses compiler-defined macros will need review. Old macros will con-
tinue to work as expected, but they are not compliant with the CCI.
2.5.15.4
CAVEATS
None.
TABLE 2-1:
MANIFEST MACROS DEFINED BY THE CCI
Name
Meaning if defined
Example
__XC__
Compiled with an MPLAB XC compiler
__XC__
__CCI__
Compiler is CCI compliant and CCI enforce-
ment is enabled
__CCI__
__XC##__
The specific XC compiler used (## can be 8, 
16
 or 32)
__XC8__
__DEVICEFAMILY__
The family of the selected target device
__dsPIC30F__
__DEVICENAME__
The selected target device name
__18F452__