2010-12-13 10 views
2

IARプラットフォームでコーディングしており、以下を実行したいと考えています。IARに関するCプログラミング

struct etimer periodic; 

が、それは誤りを思い付く:

"periodic" is declared with a never completed type. 

どのように私はこの問題を解決するか、私は次の変数を宣言し、これらの後

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; 
}; 

を次のように私はtypedefを持っていますか?

+1

'のpointernessを隠す;'構造体の終了中括弧の後にデフ多分?私は通常、そこに置くだけで、必要があるかどうかはわかりません。 – leppie

+0

ああ、私の部分には型付きエラーがあります。それらはそこにあります。 – user540382

答えて

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; 
}; 
+1

私はそれが単に関数ポインタをtypedefするための単純な規則として隠れているとは思わないと思います。結局のところ、あなたは '*'を使ってその関数の名前を逆参照することはしません。私はあなたのものと比較して、op宣言の使用方法を見てきました。私の推測は最初のものに賛成80-20です。 –

+1

私が言ったように、それは好み(OPのスタイルを使った最初のスニペット)です。私は星を目に見えるようにし、多分OPに自分のスタイルを使うように影響を与えたい – pmg

関連する問題