C программирование на IAR - PullRequest
       27

C программирование на IAR

2 голосов
/ 13 декабря 2010

Я пишу код на платформе IAR и хочу сделать следующее. У меня есть typedef следующим образом

struct timer {
  uint32_t start;
  uint32_t interval;
};

typedef (void) (*etimer_cb) (int,void*);

struct etimer {
  struct timer timer;
  struct etimer* next;
  etimer_cb p;
};

После этого я объявляю следующую переменную:

struct etimer periodic;

но появляется ошибка:

"periodic" is declared with a never completed type.

Как мне решить эту проблему?

1 Ответ

2 голосов
/ 13 декабря 2010

Удалить () из примерно void.
uint32_t не является предопределенным типом. Вам нужно #include <stdint.h>.

#include <stdint.h>
struct timer{
  uint32_t start;
  uint32_t interval;
};
typedef void (*etimer_cb)(int, void *);
struct etimer{
  struct timer timer;
  struct etimer* next;
  etimer_cb p;
};

Но я предпочитаю НЕ скрывать элемент функции

#include <stdint.h>
struct timer{
  uint32_t start;
  uint32_t interval;
};
typedef void etimer_cb(int, void *);
struct etimer{
  struct timer timer;
  struct etimer* next;
  etimer_cb *p;
};
...