-1

我想了解 PC lint 错误 19“无用声明”的解决方案。我正在使用中断向量表,并使用所需参数调用中断。当我运行 PC lint 时,我遇到如下所示的错误 19,有人可以帮助我吗?

ifndef Int_HandlerIndAddr

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

万一

#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
4

1 回答 1

2

来自http://www.gimpel.com/html/pub/msg.txt(强调添加):

19 无用的声明——一个类型自身出现,没有关联的变量,该类型不是结构体,也不是联合体,也不是枚举。 双分号可能会导致这种情况:

  int x;;

如果您注意到,您的宏以分号结尾,并在调用宏时添加分号。因此扩展代码有一个双分号。摆脱其中一个(我建议在宏定义中使用那个)。

于 2018-04-17T05:09:14.480 回答