我相信我要找的东西被称为预测......
我想键入一个引用结构的函数指针,然后将该函数指针存储在结构中。请参阅下面的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,我需要摆脱警告。
答案 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;