PC lint error 19 "бесполезное объявление"

Я хочу понять решение проблемы ошибки ПК 19 "бесполезная декларация". я использую таблицу векторов прерываний и вызываю прерывания с необходимыми параметрами. когда я бегу за ПК, у меня появляется ошибка 19, как показано ниже, может ли кто-нибудь помочь мне в этом?

ifndef Int_HandlerIndAddr

#define Int_HandlerIndAddr (Isr, CpuNr, IntNr, Prio) Int_HandlerIndAddr2 (Isr, CpuNr, IntNr, Prio)

ENDIF

#define Int_HandlerIndAddr2(Isr, CpuNr, IntNr, Prio) \
__asm__ (".ifndef .intr2.entry.include                        \n"\
        ".altmacro                                           \n"\
        ".macro .int2_entry.2 intEntryLabel, Prio, name # define the section and inttab entry code \n"\
        "   .pushsection .\\intEntryLabel,\"ax\",@progbits   \n"\
        "   __\\intEntryLabel :                              \n"\
        "       bisr    Prio                                 \n"\
        "       movh.a  %a14, hi:\\name                      \n"\
        "       lea     %a14, [%a14]lo:\\name                \n"\
        "       ji      %a14                                 \n"\
        "   .popsection                                      \n"\
        ".endm                                               \n"\
        ".macro .int2_entry.1 IntNr,Prio,CpuNr,u,name           \n"\
    ".int2_entry.2 intvec_tc\\CpuNr\\u\\IntNr,%(Prio),(name) # build the unique name \n"\
        ".endm                                               \n"\
        "                                                    \n"\
        ".macro .intr2.entry name,CpuNr,IntNr,Prio           \n"\
            ".int2_entry.1 %(IntNr),%(Prio),%(CpuNr),_,name # evaluate the priority and the cpu number \n"\
        ".endm                                               \n"\
        ".intr2.entry.include:                                \n"\
        ".endif                                              \n"\
        ".intr2.entry "#Isr","#CpuNr","#IntNr","#Prio      );\ 

вызов функции в том же файле, что и ниже

Int_HandlerIndAddr(TaskOs_CallTaskApp10ms, 0, ISR_NR_TASK_APP_10MS, ISR_PRIO_TASK_APP_10MS);

Int_HandlerIndAddr(TaskOs_CallTaskApp1ms, 0, ISR_NR_TASK_APP_1MS, ISR_PRIO_TASK_APP_1MS);

Сообщение об ошибке PC lint, как показано ниже:

Int_HandlerIndAddr(TaskOs_CallTaskApp100ms, 0, ISR_NR_TASK_APP_100MS, ISR_PRIO_TASK_APP_100MS);

C:...\0_Src\0_AppSw\Tricore\BSW\Setup\IntVecTab.c 
    107  Error 19: Useless Declaration

C:..\0_Src\0_AppSw\Tricore\BSW\Setup\IntVecTab.c 
    107  Error 19: Useless Declaration

Int_HandlerIndAddr(TaskOs_CallTaskApp10ms, 0, ISR_NR_TASK_APP_10MS, ISR_PRIO_TASK_APP_10MS);

C:......\0_Src\0_AppSw\Tricore\BSW\Setup\IntVecTab.c 
    111  Error 19: Useless Declaration

C:.....\0_Src\0_AppSw\Tricore\BSW\Setup\IntVecTab.c 
    111  Error 19: Useless Declaration

1 ответ

С http://www.gimpel.com/html/pub/msg.txt (выделение добавлено):

19 Бесполезное объявление - тип появился сам по себе без связанной переменной, и тип не является структурой, а не объединением и не перечислением. Двойная точка с запятой может вызвать это как в:

  int x;;

Если вы заметили, ваш макрос заканчивается точкой с запятой, и вы добавляете точку с запятой при вызове макроса. Поэтому расширенный код имеет двойную точку с запятой. Избавьтесь от одного из них (я бы предложил один в определении макроса).

Другие вопросы по тегам