Microchip Technology XC8 Standard Compiler (Workstation) SW006021-1 SW006021-1 ユーザーズマニュアル

製品コード
SW006021-1
ページ / 518
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