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 に答える