2013-02-24 51 views
3

我相信我所寻找的是被称为预测...预测一个结构

我想的typedef指代一个结构函数指针,然后该函数指针存储在结构体。请参阅下面的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:警告:57:71 '结构ShellCmdDEF' 里面的参数列表 Shell.h [默认启用]声明:警告:它的范围只是这个定义或声明,这可能不是你想要的[默认情况下启用]

当然,代码的工作原理,我已经做了多年,但现在它是为了米斯拉/ DO170B合规性和我需要摆脱警告。

+2

“前进宣言”是您正在寻找的术语。 http://en.wikipedia.org/wiki/Forward_declaration – 2013-02-24 16:11:17

回答

10

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

struct ShellCmd; 

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

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