2

我正在 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.

我该如何解决这个问题?

4

1 回答 1

2

()从周围删除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;
};
于 2010-12-13T10:48:32.170 回答