Ошибка незавершенного типа при создании структуры указателей на функции в C - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь создать структуру, которая содержит несколько указателей на функции, однако, когда я пытаюсь создать экземпляр структуры, я получаю сообщение об ошибке "variable "stCmdTable" was declared with a never-completed type".

У меня есть файл заголовка, в котором у меня есть следующий код:

typedef int (*pStCmd) (void);

struct stCmdStruc {
  pStCmd id;
  pStCmd measure;
  pStCmd setRelay;
};

typedef struct stCmdStruct stCmdStruct;

stCmdStruct stCmdTable;

Я хочу создать stCmdTable и назначить функции всем указателям на функции в stCmdTable, но когда ему не нравится мое объявление stCmdTable.

Я также пытался сделать что-то вроде этого, где я пытаюсь инициализировать все указатели функций на функции прямо из биты с моим определением структуры, но на самом деле это не нравится, когда мне говорят expected a ";" в конце каждая строка в структуре.

typedef int (*pStCmd) (void);

struct stCmdStruc {
  pStCmd id = sendId2;
  pStCmd measure = sendMeasurement2;
  pStCmd setRelay = setRelay2;
};

typedef struct stCmdStruct stCmdStruct;

stCmdStruct stCmdTable;

Может кто-нибудь пролить свет на то, что я делаю неправильно?

1 Ответ

0 голосов
/ 30 октября 2018

Попробуй это. , .

typedef int (*pStCmd_Type) (void);

typedef struct _stCmdStruct {
  pStCmd_Type id;
  pStCmd_Type measure;
  pStCmd_Type setRelay;
} stCmdStruct_Type;

stCmdStruct_Type stCmdTable[your_table_size];

stCmdTable[0].id = sendId2;
stCmdTable[0].measure = sendMeasurement2;
stCmdTable[0].setRelay = setRelay2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...