以下是我的.h文件
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文件中包含一些所需结构的定义我无法解决这些错误。
以下内容似乎适用于
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;
};
您在中使用pic_t
typedef const char* (*pic_flavor_t) (pic_t *);
但是您已经定义了pic_t
类型。
struct pic_
{
...
}pic_t;
所以pic_t
在这个时刻不可用/编译器不知道(在#3行)。
若要删除错误,请在使用pic_t
类型之前声明此结构。
啊!您还需要typedef
—struct
到pic_t
—不要将其作为结构对象。
更好的解释是使用user3386109的答案中的代码。