User manual

MPLAB
®
XC8 C Compiler User’s Guide
DS52053B-page 378 2012 Microchip Technology Inc.
(101) #* may not follow #else (Preprocessor)
A #else or #elif has been used in the same conditional block as a #else. These
can only follow a #if, for example:
#ifdef FOO
result = foo;
#else
result = bar;
#elif defined(NEXT) /* the #else above terminated the #if */
result = next(0);
#endif
(102) #* must be in an #if (Preprocessor)
The #elif, #else or #endif directive must be preceded by a matching #if line. If
there is an apparently corresponding #if line, check for things like extra #endif’s, or
improperly terminated comments, for example:
#ifdef FOO
result = foo;
#endif
result = bar;
#elif defined(NEXT) /* the #endif above terminated the #if */
result = next(0);
#endif
(103) #error: * (Preprocessor)
This is a programmer generated error; there is a directive causing a deliberate error.
This is normally used to check compile time defines etc. Remove the directive to
remove the error, but first check as to why the directive is there.
(104) preprocessor #assert failure (Preprocessor)
The argument to a preprocessor #assert directive has evaluated to zero. This is a
programmer induced error.
#assert SIZE == 4 /* size should never be 4 */
(105) no #asm before #endasm (Preprocessor)
A #endasm operator has been encountered, but there was no previous matching
#asm, for example:
void cleardog(void)
{
clrwdt
#endasm /* in-line assembler ends here,
only where did it begin? */
}
(106) nested #asm directives (Preprocessor)
It is not legal to nest #asm directives. Check for a missing or misspelled #endasm
directive, for example:
#asm
MOVE r0, #0aah
#asm ; previous #asm must be closed before opening another
SLEEP
#endasm