2013-02-24 3 views
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: предупреждение: 'структура ShellCmdDEF', объявленная внутри списка параметров [включено по умолчанию] Shell.h: 57: 71: предупреждение: его область действия - это только это определение или декларация, которая, вероятно, не является тем, что вы хотите [включено по умолчанию]

Конечно, код работает, и я делал это в течение многих лет, но теперь это касается соответствия Misra/DO170B и Мне нужно избавиться от предупреждений.

+2

«вперед декларация» является термином, который вы ищете. http://en.wikipedia.org/wiki/Forward_declaration –

ответ

10

Объявляет структуру перед типом указателя функции:

struct ShellCmd; 

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

typedef struct ShellCmd 
{ 
    uint32_t u32Flags; 
    uint16_t u16State; 
    ShellCmdFN pCmdFN; 
} ShellCmdDEF; 
Смежные вопросы