Microchip Technology XC8 Standard Compiler (Workstation) SW006021-1 SW006021-1 User Manual

Product codes
SW006021-1
Page of 518
Error and Warning Messages
 2012 Microchip Technology Inc.
DS52053B-page 475
(1406) auto eeprom variables are not supported
(Code Generator)
Variables qualified as eeprom cannot be auto. You can define static local objects 
qualified as eeprom, if required.
void main(void) {
    eeprom int mode;  // oops -- make this static or global
(1407) bit eeprom variables are not supported
(Code Generator)
Variables qualified as eeprom cannot have type bit.
eeprom bit myEEbit;    // oops -- you can’t define bits in EEPROM
(1408) ignoring initialization of far variables
(Code Generator)
Variables qualified as far cannot be assigned an initial value. Assign the value later in 
the code.
far int chan = 0x1234; // oops -- you can’t assign a value here
(1409) warning number used with pragma "warning" is invalid
(Parser)
The message number used with the warning pragma is below zero or larger than the 
highest message number available.
#pragma warning disable 1316 13350   // oops -- maybe number 1335?
(1410) can’t assign the result of an invalid function pointer
(Code Generator)
The compiler will allow some functions to be called via a constant cast to be a function 
pointer, but not all. The address specified is not valid for this device.
foobar += ((int (*)(int))0x0)(77);
        // oops -- you can’t call a function with a NULL pointer
(1411) Additional ROM range out of bounds
(Driver)
Program memory specified with the --ROM option is outside of the on-chip, or external, 
memory range supported by this device.
--ROM=default,+2000-2ffff
Oops -- memory too high, should that be 2fff?
(1412) missing argument to pragma "warning disable"
(Parser)
Following the #pragma warning disable should be a comma-separated list of mes-
sage numbers to disable.
#pragma warning disable  // oops -- what messages are to be disabled?
Try something like the following.
#pragma warning disable 1362
(1413) "*" is positioned at address 0x0 and has had its address taken; pointer comparisons may be 
invalid
(Code Generator)
An absolute object placed at address 0 has had its address taken. By definition, this is 
a NULL pointer and code which checks for NULL (i.e., checks to see if the address is 
valid) may fail.
int foobar @ 0x00;
int  * ip;
void
main(void)
{
ip = &foobar;  // oops -- 0 is not a valid address