3

私が探しているのは予測と呼ばれるものだと思います...

構造体を参照する関数ポインタを型定義したいのですが、その関数ポインタが構造体に格納されています。以下の 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' がパラメータ リスト内で宣言されています [デフォルトで有効]デフォルトで有効]

もちろん、コードは機能します。私は何年もこれを行ってきましたが、今は Misra/DO170B 準拠のためであり、警告を取り除く必要があります。

4

1 に答える 1

10

関数ポインター型の前に構造体を宣言します。

struct ShellCmd;

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

typedef struct ShellCmd
{
    uint32_t    u32Flags;
    uint16_t    u16State;
    ShellCmdFN  pCmdFN;
} ShellCmdDEF;
于 2013-02-24T15:29:02.603 に答える