2014-04-23 65 views
0

以下是我的.h文件前「*」標記錯誤預期「)」在C

1 typedef int32_t status_t; 
    2 typedef u_int16_t pic_id_t; 
    3 typedef const char* (*pic_flavor_t) (pic_t *); 
    4 typedef status_t (*pic_periodic_t) (pic_t *); 
    5 typedef status_t (*pic_get_port_info_t) (pic_t *pic, u_int16_t link,void *info,boolean *need_update); 
    6 
    7 struct pic_ 
    8 { 
    9  u_int16_t nic_slot; 
    10  u_int16_t pic_slot; 
    11  u_int32_t pic_flags; 
    12  pic_id_t pic_id; 
    13  u_int16_t pic_asic_type; 
    14  u_int16_t pic_firstport; 
    15  pic_periodic_t pic_periodic; 
    16  pic_flavor_t pic_flavor; 
    17  pic_get_port_info_t pic_get_port_info; 
    18  void *pic_context; 
    19 }pic_t; 
    20 

,這些都是我已經得到了錯誤。

../../../../../src/pfe/common/drivers/rpio/rpio_tunnel_pvt1.h:3: error: expected ')' before '*' token 
../../../../../src/pfe/common/drivers/rpio/rpio_tunnel_pvt1.h:4: error: expected ')' before '*' token 
../../../../../src/pfe/common/drivers/rpio/rpio_tunnel_pvt1.h:5: error: expected ')' before '*' token 
../../../../../src/pfe/common/drivers/rpio/rpio_tunnel_pvt1.h:15: error: expected specifier-qualifier-list before 'pic_periodic_t' 

我想爲我的.c文件創建一個新的.h文件。在這裏,我包含了我的.c文件中需要的幾個結構的定義。 我無法解決這些錯誤。

回答

0

您在使用pic_t

typedef const char* (*pic_flavor_t) (pic_t *);

但你ahave後此定義pic_t類型。

struct pic_ 
{ 
    ... 
}pic_t; 

因此pic_t不可用/編譯器在此時不知道(在行#3)。

要刪除錯誤,請在使用pic_t類型之前聲明此結構。

啊!您還需要typedefstructpic_t不會將其作爲結構對象。

那麼最好用代碼user3386109的答案來解釋。

+0

但如果我定義 pic_id_t 前pic_id 的typedef爲const char *(* pic_flavor_t)(pic_t *); 那麼它會再次尋找一個定義! – user3409272

+0

'pic_id_t'與'pic_t'不同。 –

+0

所以我應該先寫結構 然後pic_id_t pic_id – user3409272

1

以下似乎工作

typedef struct pic_ pic_t; 
typedef int32_t status_t; 
typedef u_int16_t pic_id_t; 
typedef const char* (*pic_flavor_t) (pic_t *); 
typedef status_t (*pic_periodic_t) (pic_t *); 
typedef status_t (*pic_get_port_info_t) (pic_t *pic, u_int16_t link,void *info, boolean *need_update); 

struct pic_ 
{ 
    u_int16_t nic_slot; 
    u_int16_t pic_slot; 
    u_int32_t pic_flags; 
    pic_id_t pic_id; 
    u_int16_t pic_asic_type; 
    u_int16_t pic_firstport; 
    pic_periodic_t pic_periodic; 
    pic_flavor_t pic_flavor; 
    pic_get_port_info_t pic_get_port_info; 
    void *pic_context; 
}; 
+0

嘿!是的,它的大部分工作,但仍然存在1錯誤../../../../../src/pfe/common/drivers/rpio/rpio_tunnel_pvt1.h:7:錯誤:期望的聲明說明符或'...'在'boolean'之前 – user3409272

+0

@ user3409272使用'bool',內核中沒有'boolean'類型。 – nos

+0

也試過布爾,同樣的錯誤 – user3409272

相關問題