8.5 Messages 2000 Thru 2499
(2000) * attribute/specifier has a misplaced keyword (*) (Parser)
// oops -- ’base’ is a token which has specific meaning
void __interrupt(irq(base)) isr(void)
(2001) * attribute/specifier has a misplaced parenthesis (Parser)
void __interrupt(irq((TMR0)) isr(void) // oops -- one too many ’(’s
(2002) __interrupt attribute/specifier has conflicting priority-levels (Parser)
//oops -- is it meant to be low or high priority?
void __interrupt(irq(TMR0), high_priority, low_priority) tc0Int(void)
(2003) * attribute/specifier has a duplicate keyword (*) (Parser)
//oops -- using high_priority twice has no special meaning
void __interrupt(irq(TMR0), high_priority, high_priority) tc0Int(void)
(2004) __interrupt attribute/specifier has an empty “irq” list (Parser)
irq()
argument to the
__interrupt()
specifier takes a comma-separated list of
interrupt vector numbers or symbols. At least one value or symbol must be present to
link this function to the interrupt source.
//oops -- irq() does not indicate the interrupt source
void __interrupt(irq(),high_priority) tc0Int(void)
(2005) __interrupt attribute/specifier has an empty “base” list (Parser)
base()
argument to the
__interrupt()
specifier is optional, but when used it must take
a comma-separated list of interrupt vector table addresses. At least one address
must be present to position the vector table. If you do not specify the base address
with an ISR, its vector will be located in an interrupt vector table located at an
address equal to the reset value of the IVTBASE register.
//oops -- base() was used but did not indicate a vector table address
void __interrupt(irq(TMR0), base()) tc0Int(void)
(2006) __interrupt attribute/specifier has a duplicate “irq” (*) (Parser)
irq()
argument to the __interrupt()
specifier has been used more than once.
//oops -- is one of those sources wrong?
void __interrupt(irq(TMR0,TMR0)) tc0Int(void)
(2007) __interrupt attribute/specifier has a duplicate “base” (*) (Parser)
base()
argument to the
__interrupt()
specifier has been used more than once.
//oops -- is one of those base addresses wrong?
void __interrupt(irq(TMR0), base(0x100,0x100)) tc0Int(void)
(2008) unknown “irq” (*) in __interrupt attribute/specifier (Parser)
irq()
argument to the __interrupt()
specifier does not correspond with an
interrupt source on this device.
//oops -- what interrupt source is TODO?
void __interrupt(irq(TODO),high_priority) tc0Int(void)
(2009) * attribute/specifier has a misplaced number (*) (Parser)
//oops -- this specifier requires specific argument, not a number
void __interrupt(0) isr(void)
(2010) __interrupt attribute/specifier contains a misplaced interrupt source name (*) (Parser)
irq()
.//oops -- base() needs a vector table address
void __interrupt(irq(TMR0), base(TMR0)) tc0Int(void)
(2011) __interrupt attribute/specifier has a base (*) not supported by this device (Parser)
base()
argument to the
__interrupt()
specifier is not valid for the target device. It
cannot, for example, be lower than the reset value of the IVTBASE register.
//oops -- the base() address is too low
void __interrupt(irq(TMR0), base(0x00)) tc0Int(void)
(2012) * attribute/specifier is only applicable to functions (Parser)
__interrupt()
specifier has been used with
something that is not a function.
// oops -- foobar is an int, not an ISR
__interrupt(irq(TMR0)) int foobar;
(2013) argument “*” used by “*” attribute/specifier not supported by this device (Parser)
// oops -- base() can’t be used with a device that does not
// support vectored interrupts
void __interrupt(base(0x100)) myMidrangeISR(void)
(2014) interrupt vector table @ 0x* already has a default ISR “*” (Code Generator)
base()
address for
each default.
void __interrupt(irq(default), base(0x100)) tc0Int(void) { ...
void __interrupt(irq(default), base(0x100)) tc1Int(void) { ...
// oops -- did you mean to use different different base() addresses?
(2015) interrupt vector table @ 0x* already has an ISR (*) to service IRQ * (*) (Parser or Code Generator)
void __interrupt(irq(TMR0), base(0x100)) tc0Int(void) { ...
void __interrupt(irq(TMR0), base(0x100)) tc1Int(void) { ...
// oops -- did you mean to use different different base() addresses?
(2016) interrupt function “*” does not service any interrupt sources (Code Generator)
irq()
argument to indicate the source or sources.
//oops -- what interrupt does this service?
void __interrupt(low_priority, base(0x100)) tc0Int(void)
(2017) config programming has disabled multi-vectors, “irq” in __interrupt attribute/specifier is ignored (Code Generator)
irq()
argument to
specify an interrupt source, but the vector table has been disabled via the
configuration bits. Either re-enable vectored interrupts or use the priority keyword
in the __interrupt()
specifier to indicate the interrupt source.
#pragma config MVECEN=0
void __interrupt(irq(TMR0), base(0x100)) tc0Int(void)
// oops -- you cannot disable the vector table then allocate interrupt
// functions a vector source using irq()
(2018) interrupt vector table @ 0x* has multiple functions (* and *) defined at interrupt level * (Code Generator)
#pragma config MVECEN=0
void __interrupt(high_priority) tc0Int(void) {...
void __interrupt(high_priority) tc1Int(void) {...
(2019) * interrupt vector in table @ 0x* is unassigned, will be programmed with a * (Code Generator)
In a program for a device operating in legacy mode, an interrupt vector
in the indicated vector table has not been programmed with an address. The compiler
will program this vector with an address as specified by the
-mundefints
option.
(2020) IRQ * (*) in vector table @ 0x* is unassigned, will be programmed with the address of a * (Code Generator)
The interrupt vector in the indicated vector table has not been
programmed with an address. The compiler will program this vector with an address as
specified by the -mundefints
option.
(2021) invalid runtime “*” sub-option argument (*) (Driver)
--RUNTIME
option is not valid.
--RUNTIME=default,+ivt:reset
Oops, the ivt
suboption requires a numeric address
as its argument.
(2022) runtime sub-option “ivt” specifies a base address (0x*) not supported by this device (Driver)
The address specified with the ivt
sub-option is not
valid for the selected target device. It cannot, for example, be lower than the
reset value of the IVTBASE register.
(2023) IVT @ 0x* will be selected at startup (Code Generator)
The source code defines more than one IVT and no address was specified
with the ivt
sub-option to the --RUNTIME
option to
indicate which table should be selected at startup. The IVT with the lowest address
will be selected by the compiler. It is recommended that you always specify the
table address when using this option.
(2024) runtime sub-option “ivt” specifies an interrupt table (@ 0x*) that has not been defined (Driver)
--RUNTIME
option was used to
specify a IVT address, but this address has not been specified in the source code
with any ISR. Check that the address in the option is correct, or check that the
base()
arguments to the __interrupt()
specifier are specified and are correct.
--RUNTIME=+ivt:0x100
Oops -- is this the right address? Nothing in the source code uses this base address.
(2025) qualifier * on local variable “*” is not allowed and has been ignored (Parser)
near int foobar; // oops -- auto variables cannot use near
(2026) variables qualified “*” are not supported for this device (Parser)
eeprom int serialNo; // oops -- can’t use eeprom with PIC18 devices
(2027) initialization of absolute variable “*” in * is not supported (Code Generator)
eeprom char foobar __at(0x40) = 99; // oops - absolute can’t be eeprom
(2028) external declaration for identifier “*” doesn't indicate storage location (Code Generator)
const
or a bank specifier as
required.extern int tapCounter; // oops - how does the compiler access this?
(2029) a function pointer cannot be used to hold the address of data (Parser)
int (*fp)(int);
int foobar;
fp = &foobar; // oops - a variable’s address cannot be assigned
(2030) a data pointer cannot be used to hold the address of a function (Parser)
void *
pointer) cannot
be used to hold the address of a function.
void *gp;
int myFunc(int);
gp = foobar; // oops - a function’s address cannot be assigned
(2033) recursively called function might clobber a static register it has allocated in expression (Code Generator)
unsigned long fib_rec(unsigned long n)
{
// the temporary result of the LHS call to fib_rec() might
// store the result in a temp that is clobbered during the RHS
// call to the same function
return ((n > 1) ? (fib_rec(n-1) + fib_rec(n-2)) : n);
}
(2034) 24-bit floating-point types are not CCI compliant; use 32-bit setting for compliance (Parser)
The CCI does not permit the use of 24-bit floating point types. If you
require compliance, use the -no-short-float
and
-no-short-double
options, which will ensure the IEEE standard
32-bit floating-point type is used for float
and
double
types.
(2035) use of sizeof() in preprocessor expressions is deprecated; use __SIZEOF_*__ macro to avoid this warning (Preprocessor)
sizeof()
in expressions that must be
evaluated by the preprocess are no longer supported. Preprocessor macros defined by
the compiler, such as __SIZEOF_INT__
, can be used instead. This
does not affect the C operator sizeof()
which can be used in the
usual way.
#if (sizeof(int) > 2) // oops -- use (__SIZEOF_INT__ > 2) instead
(2036) use of @ is not compliant with CCI, use __at() instead (Parser)
@ address
construct. Instead, place
__at(address)
after the identifier in the
definition.
int foobar @ 0x100; // oops -- use __at(0x100) instead
(2037) short long integer types are not compliant with CCI (Parser)
short long
type. Instead consider an equivalent long int
type.
short long input; // oops -- consider input to be long when using CCI
(2038) use of short long integer types is deprecated; use __int24 or __uint24 to avoid this warning (Parser)
short long
type specifiers has been replaced with
the more portable __int24
(replacing short long
)
and __uint24
(replacing unsigned short long
)
types.
short long input; // oops -- use __int24 as the type for input
(2039) __int24 integer type is not compliant with CCI (Parser)
__int24
type. Instead use
the long int
type.
__int24 input; // oops -- use a long type when using CCI
(2040) __uint24 integer type is not compliant with CCI (Parser)
__uint24
type. Instead use
the unsigned long int
type.
__uint24 input; // oops -- use an unsigned long type when using CCI
(2041) missing argument after “*” (Driver)
xc8-cc -mcpu=18f4520 -Wl,-Map main.c
Oops, the -Map
option requires a map filename, e.g.
-Wl,-Map=proj.map
.
(2042) no target device specified; use the -mcpu option to specify a target device (Driver)
-mprint-devices
option will display a list of all chips
that could be selected to build
for.xc8-cc main.c
Oops, use the -mcpu
option to specify the device to
build for.
(2043) target device was not recognized (Driver)
-mcpu
option.
xc8-cc -mcpu=pic io.c
Oops, the device name must be exactly one of those shown by
-mprint-devices
.
(2044) unrecognized option “*” (Driver)
The option specified was not recognized by the top-level driver. The option in question will be passed further down the compiler tool chain, but this may cause errors or unexpected behavior.
(2045) could not find executable “*” (Driver)
The top-level driver was unable to locate the specified compiler tool in the usual locations. Ensure you have not moved files or directories inside the compiler install directory.
(2046) identifier length must be between * and *; using default length * (Driver)
-N=16
Oops, the identifier length must be no less than 31 and no greater than 255.
(2047) 24-bit floating point types are not supported when compiling in C99 (Driver)
xc8-cc -mcpu=18f4520 -fshort-double main.c
Oops, you cannot use 24-bit double
types with
C99.
(2048) C language extension “*” is not supported and will be ignored (Driver)
xc8-cc -mcpu=16f1937 -mext=iar main.c
Oops, that language extension is not supported.
(2049) C99 compliant libraries are currently not available for baseline or mid-range devices, or for enhanced mid-range devices using a reentrant stack; using C90 libraries (Driver)
At present, C99-compliant libraries are not available for all devices. The C90-compliant libraries can be used with these device while still building your source code to the C99 standard. Alternatively, you may choose to build to the C90 standard.
(2050) use of the -mcci option is deprecated; use -mext=cci to avoid this warning (Driver)
Always use the -mext=cci
option to select the Common C
Interface.
(2051) The current license does not permit the selected optimization level* (Driver)
xc8-cc -mcpu=18f4520 -Os main.c
Oops, you cannot select level 's' optimizations if this compiler is unlicensed.
(2052) The current license does not permit the selected optimization level and other levels are not permitted by the NOFALLBACK option (Driver)
This compiler’s license does not allow the requested compiler operating
mode. Since the --nofallback
option is enabled, the compiler has
produced this error and will not fall back to a lower optimization level. If you
believe that you are entitled to use the requested optimizations, this error might
indicate that your compiler is not be activated correctly.
(2053) function “*” is never called (Code Generator)
The specified inline function has never been called and will not generate code. This message differs to (520) in that the function specified is marked as inline. You may choose to disable this message for all inline functions, but allow message (520) to be issued for all other unused functions.
(2054) the language standard “*” is not supported; using C99 (Driver)
-std
option is
not supported by the compiler. The compiler will use the C99 standard instead.
xc8-cc -mcpu=12f510 -std=c11 main.c
Oops, you cannot select the C11 standard.
(2056) use of the -fmode option is deprecated; use -O to control optimizations and avoid this warning (Driver)
The compiler no longer uses both the mode and optimization selection to
fully specify which optimizations are performed. All optimizations are now
controllable via the optimization level, which is selectable using the compiler’s
-O
option. Unlicensed compilers, however, cannot use all
levels.
(2057) The XC8 compiler installation appears to be corrupted. Please reinstall and try again (Driver)
The compiler has detected that something about the installation is not valid. This is most like due to compiler applications being deleted or moved.
(2058) function "*" cannot be inlined with code coverage enabled (Code Generator)
With the code coverage feature enabled, functions cannot be inlined. This advisary is just reminding you that the indicated function will not be inlined while code coverage is still in effect.
(2059) conflicting * register values found in Start Segment Address record (3) (Hexmate)
Hexmate will pass through any type 3 records in the Hex files being processed, but if there is any conflict in the values specified for the CS or IP registers in these records, it will flag this error.
(2060) CRC polynomial unspecified or set to 0 (Hexmate)
If you are calculating a CRC hash value using Hexmate and the polynomial value is zero, this warning will be triggered to indicate that you will be getting a trivial hash result. Typically this will occur if you have forgotten to set the polynomial value in the checksum option.
(2061) word width required when specifying reserve byte order hash (Hexmate)
If you are calculating a CRC reading data words in the Hex file in
reverse order, you must specify a word width in bytes with Hexmate's
r
suboption to -CK
. If you are using the assembler driver, this is specified using the
revword
suboption to -mchecksum
.
(2062) word width must be * when specifying reserve byte order hash (Hexmate)
If you are calculating a CRC reading data words in the Hex file in
reverse order, the word width can only be one of the values indicated in the
message. This value is specified with Hexmate's r
suboption to
-CK
. If you are using the assembler
driver, this is specified using the revword
suboption to
-mchecksum
.
(2063) * address must be a multiple of the word width when performing a reverse byte order hash (Hexmate)
If you are calculating a CRC reading data words in the Hex file in
reverse order, the starting and ending addresses must be multiples of the word width
specified in Hexmate's -CK
option or the assembler's -mchecksum
option.
(2064) PIC18 extended instruction cannot be used when the standard instruction set is selected (Assembler)
PIC18 assembly projects must be set up to use one of the standard or
extended instructions sets. This message will be displayed if you have used an
extended instruction without having enabled the extended instruction set using the
-misa
option.
(2065) offset out of range (Assembler)
The file register address for this extended PIC18 instruction is out of range.
clrf [200] ; oops
; for extended instructions, the file operand must be less than, for example, 0x60
(2066) MESSG directive: * (Assembler)
This is the output message of the MESSG
assembler
directive.
(2067) ERROR directive: * (Assembler)
This is the output of the ERROR
assembler
directive.
(2068) use of the opt control "*" is deprecated; use the corresponding directive (Assembler)
The assembler controls of the form OPT CONTROL
should no longer be used. Equivalent directives are available and can be formed by
removing the OPT
token from the control. Instead of using
OPT TITLE "My great project"
, for example, use TITLE
"My great project"
.
(2069) use of the radix option of the list control is deprecated; use the radix directive (Assembler)
The LIST
assembler control previously allowed the input source to be
specified using the r
argument to the LIST
option.
This should no longer be used. Use the RADIX
directive instead.
Instead of using OPT LIST r=hex
, for example, use RADIX
hex
.
(2070) device specified by the PROCESSOR directive conflicts with that set by the -mcpu option (Assembler)
The -mcpu
driver option sets the target device being
built for. The PROCESSOR
directive may be used, if required, to
ensure that an assembly source file is only ever built for the specified device. If
there is a mismatch in the device specified by the option and the directive, this
message will be displayed.
(2071) could not find record containing hash starting address 0x* (Hexmate)
Hexmate was asked to calculate a hash from data starting at an address that did not appear in the HEX file.
(2072) only SHA256 is currently supported (set width control to 256) (Hexmate)
The width suboption can only be set to 256 or -256 when selecting a SHA hash algorithm. Alternatively, the width suboption can be omitted entirely.
(2073) when compiling for C90, specifying an output file for dependencies is not supported and will be ignored (Driver)
Only the Clang front end can create a file containing dependencies.
xc8-cc -mcpu=18f4520 -MF depfile -std=c90 main.c
Oops, you cannot use the -MF
option with
-std=c90
.
(2074) word size for byte skip with hash calculation must be * (Hexmate)
s
suboption of -CK
, which
indicates the size of the word in which bytes will be skipped for the purposes of
calculating a hash value, is not
permitted.hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021s1
Oops, the argument to s
must be larger than 1.(2075) word size required when requesting byte skip with hash calculation (Hexmate)
An argument to the s
suboption of -CK
is required.
It represents the word width in which bytes will be skipped for the purposes of
calculating a hash value.
hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021s.2
Oops, a number is required after the s
, for example
s4.2
.
(2076) number of bytes for byte skip with hash calculation must be * (Hexmate)
The number of bytes to skip within each word is illegal.
hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021s4.4
Oops, the number of bytes to skip must be less than 4, the skip word width, for
example s4.2
.
(2077) number of bytes required when requesting byte skip with hash calculation (Hexmate)
An argument following the .
in the s
suboption of
-CK
is required. It represents the number of bytes to skip in
each word for the purposes of calculating a hash value.
hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021s4.
Oops, a number is required after the .
in the s
argument, for example s4.2
.
(2078) the number of hash bytes to which the trailing code is appended (*) must be no greater than the hash width (*) (Hexmate)
A trailing code has been requested to follow the specified number of bytes of the hash value, but this number is larger than that the entire hash.
hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021t00.4
Oops, if the hash value is only 2 bytes long, asking for a trailing code to be
appended after every 4 bytes makes no sense. Instead try t00.1
, for
example, to append the code to each byte.
(2079) the hash width (*) must be a multiple of the number of hash bytes appended with a trailing code (*) (Hexmate)
A trailing code has been requested to follow the specified number of bytes of the hash value, but the hash width is not a multiple of this number.
hexmate main.hex -ck=0-ff@100+ffffg5w-4p1021t00.3
Oops, if the hash value is 4 bytes long, asking for a trailing code to be appended
after every 3 bytes makes no sense. Instead try t00.2
, for example,
to append the code to every two bytes of the hash.
(2080) WARN: * (Assembler)
This is a programmer-generated warning; there is an assembly directive causing a deliberate warning. Check the source code to determine if the warning should be investigated further. Consider removing the directive if it is no longer pertinent.
WARN "I have not yet confirmed that this is the correct threshold"
movlw 22
movwf threshold,c
(2081) the device architecture "*" does not match previously encountered object files "*" (Linker)
The linker was passed objects files that were built for different target devices. This is only likely to occur if you are using precompiled object files or libraries built from assembler code. Ensure all modules are built for the same device.
(2082) can't create temporary file (Driver)
The driver's attempt to create a temporary file failed. This could be due to a number of reasons, including disk space or permissions for the directory in which the system will create temporary files.
(2083) the current license does not permit the "*" feature (Driver)
A feature has been used that is not permitted by the compiler license. A PRO compiler license is required for some compiler features. Ensure that your compiler is installed correctly and has not expired if you believe that you have the appropriate license.
xc8-cc -mcpu=16f1937 -mchp-stack-usage main.c perip.c
Oops, the stack guidance feature, for example, requires a PRO compiler license to operate.
(2084) absolute object "*" has an address that lies within memory utilized by the compiler and will likely lead to code failure (Code Generator)
An absolute object (one declared using __at()
) has been placed at an
address that must be used by the compiler. The object will likely be corrupted by
compiler generated code at runtime and lead to program failure.
int __at(0x0) myVar; // oops - not a good address
(2085) the BANKISEL directive has no effect with the currently selected device and will be ignored (Assembler)
The BANKISEL
assembler directive is required only for Baseline and
Mid-range devices. It will be ignored for other devices, but check your device data
sheet to ensure your code that performs indirect access of objects is valid for the
selected device.
BANKISEL myVar ;oops - this device does not use separate indirect access bank bits
movwf INDF
(2086) memory for a heap has been reserved in response to the detection of calls to malloc/calloc/realloc/free function(s) (Driver)
The compiler has detected calls to the standard dynamic memory allocation functions
when the auto
size value was set with the -mheap
option. A compiler-determined amount of memory has been reserved for the heap.
(2087) memory for the * software stack has been reserved in response to the detection of functions built for reentrancy (Driver)
The compiler has detected functions built with the reentrant (software stack) model
when the auto
size value was set with the -mstack
option. A compiler-determined amount of memory has been reserved for the indicated
stack.
(2088) fixup overflow referencing * * (0x*) into * byte* at 0x*/0x* -> 0x* (*** */0x*) (Linker)
This is the warning variant of message 1356, which might be issued if using the
--fixupoverflow=warn
linker option. See error message 1356 for
more information.
(2089) fixup overflow storing 0x* in * byte* at 0x*/0x* -> 0x* (*** */0x*) (Linker)
This is the warning variant of message 1357, which might be issued if using the
--fixupoverflow=warn
linker option. See error message 1356 for
more information.
(2090) fixup overflow storing 0x* in * byte* (Linker)
This is the list file warning variant of message 1357, which might be printed in the
assembly list file if using the --fixupoverflow=warn
linker option.
See error message 1356 for more information.
(2091) fixup overflow messages have been recorded in the list file "*" (Linker)
The lstwarn
argument to the --fixupoverflow
was
specified and fixup overflow situations were detected in the program. This advisory
message is a reminder to check the assembly list file to see where fixup overflows
were detected.
(2092) relocatable list file is not available; fixup overflow list file messages cannot be generated (Linker)
The lstwarn
argument to the --fixupoverflow
was
specified and fixup overflow situations were detected in the program, but the linker
is not processing any assembly list file, so the warning messages cannot be printed.
The linker completes the information in the assembly list file produced by the
assembler after the link step is complete. Check to ensure that a list file was
requested, and that you have not explicitly used the linker's
--norlf
option.
(2093) number of arguments passed to function "*" does not match function's prototype (Code Generator)
int test(); // oops--this should define the parameters
...
test(12, input);
The error form of this message is printed if the
function in question is not externally defined.(2094) The selected Device Family Pack (DFP) contains features not implemented in this compiler version; consider using an alternate DFP or a more recent compiler release (Driver, Code Generator, Assembler)
The compiler has detected features in the DFP which it does not implement. This is mostly likely the result of selecting a DFP that is much more recent than the compiler. Choose an older DFP or a newer version of the compiler with the same DFP.
(2095) legacy HI-TECH support is deprecated and will be discontinued in a future release; consult the release notes for more details
A future version of MPLAB XC8 will discontinue support for legacy HI-TECH C90 source code. Consider code migration to the C99-compliant syntax and the Microchip Unified Standard Libraries. This message will be issued whenever the xc8, picc, or picc18 legacy drivers are directly executed. Note that this future change will not affect standard C90-compliant code; only legacy HI-TECH code syntax and libraries will no longer be supported.
(2096) undefined symbol "*" (*) (Linker)
This is a new-style error for a symbol that has been referenced but not defined at link time. This error could be due to a spelling error, or a failure to link an appropriate module.
(2097) undefined symbol "*" (*) (Linker)
This is a new-style warning for a symbol that has been referenced but not defined at link time. This warning could be due to a spelling error, or a failure to link an appropriate module.
(2098) indirect function call via a NULL pointer ignored (Code Generator)
NULL
. That pointer has been
used to call a function. The call will not be
made.int (*fp)(int, int);
result = fp(8,10); // oops--this pointer has not been initialized
(2099) legacy C90 library is deprecated and will be discontinued in a future release; consult the release notes for more details (Driver)
A future version of MPLAB XC8 will discontinue support for legacy HI-TECH C90 libraries. Consider code migration to the C99-compliant syntax and the Microchip Unified Standard Libraries. This message will be issued whenever the xc8, picc, or picc18 legacy drivers are directly executed. Note that this future change will not affect standard C90-compliant code; only legacy HI-TECH code syntax and libraries will no longer be supported.
(2100) using the C99 standard library with the selected device may result in larger code and data usage (Driver)
This message advises that the memory usage of the current project built with the C99-compliant standard library might be larger than that when built using the C90-compliant library. The C99 implementation of many functions is more robust and can consume additional resources.
(2101) duplicate "*" option (Driver)
xc8-cc -mcpu=18f4520 -mstack=hybrid -mstack=compiled main.c
Oops,
which stack model did you intend to use?(2102) *interrupt vector unassigned; will be programmed with a * (Code Generator)
The interrupt vector specified has not been assigned an address. It will be programmed by the compiler in the manner described.