预测结构

时间:2013-02-24 15:27:13

标签: c struct ansi

我相信我要找的东西被称为预测......

我想键入一个引用结构的函数指针,然后将该函数指针存储在结构中。请参阅下面的ShellCmdDEF。

typedef BOOL (*ShellCmdFN) (struct ShellCmdDEF* pCmd, uint16_t u16State);

typedef struct
{
    uint32_t    u32Flags;
    uint16_t    u16State;
    ShellCmdFN  pCmdFN;

} ShellCmdDEF;

编译器因此抱怨......

Shell.h:57:71:警告:'struct ShellCmdDEF'在参数列表中声明[默认启用] Shell.h:57:71:警告:它的范围只是这个定义或声明,可能不是你想要的[默认启用]

当然代码有效,而且我已经做了多年,但现在它符合Misra / DO170B,我需要摆脱警告。

1 个答案:

答案 0 :(得分:10)

在函数指针类型之前声明结构:

struct ShellCmd;

typedef BOOL (*ShellCmdFN) (struct ShellCmd* pCmd, uint16_t u16State);

typedef struct ShellCmd
{
    uint32_t    u32Flags;
    uint16_t    u16State;
    ShellCmdFN  pCmdFN;
} ShellCmdDEF;