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

製品コード
SW006021-1
ページ / 518
MPLAB
®
 XC8 C Compiler User’s Guide
DS52053B-page 418
 2012 Microchip Technology Inc.
(469) undefined symbol "*" in FNROOT record 
(Linker)
The linker has found an undefined symbol in the FNROOT record for a non-reentrant 
function. Contact Microchip Technical Support if this is not handwritten assembler 
code.
(470) undefined symbol "*" in FNSIZE record 
(Linker)
The linker has found an undefined symbol in the FNSIZE record for a non-reentrant 
function. Contact Microchip Technical Support if this is not handwritten assembler 
code.
(471) recursive function calls: 
(Linker)
These functions (or function) call each other recursively. One or more of these functions 
has statically allocated local variables (compiled stack). Either use the reentrant 
keyword (if supported with this compiler) or recode to avoid recursion, for example:
int test(int a)
{
   if(a == 5) {
      /* recursion may not be supported by some compilers */
      return test(a++); 
   }
   return 0;
}
(472) non-reentrant function "*" appears in multiple call graphs: rooted at "*" and "*"
 
(Linker)
This function can be called from both main-line code and interrupt code. Use the 
reentrant
 keyword, if this compiler supports it, or recode to avoid using local vari-
ables or parameters, or duplicate the function, for example:
void interrupt my_isr(void)
{
  scan(6);     /* scan is called from an interrupt function */
}
void process(int a)
{
  scan(a);     /* scan is also called from main-line code */
}
(473) function "*" is not called from specified interrupt_level 
(Linker)
The indicated function is never called from an interrupt function of the same interrupt 
level, for example:
#pragma interrupt_level 1
void foo(void)
{
    ...
}
#pragma interrupt_level 1
void interrupt bar(void)
{
    // this function never calls foo()
}