2014-04-17 28 views
-3

嗨,我正在C项目中工作;不幸的是我有这个警告 我会很感激,如果有人会加我: 这里是代码 ........................... .................................. ............... .......................................... ....... ...........................'sizeof'的无效应用程序

/*--------------------------------------------------------------*/ 
63:static void /* the RREQ message is send in broadcast to all 
64:    neighbors through all its interfaces*/ 
65:send_rreq(struct route_discovery_conn *c, const rimeaddr_t *dest) 
66:{ 
67: rimeaddr_t dest_copy; 
68: struct route_discovery_packet *msg; 
69: 
70: rimeaddr_copy(&dest_copy, dest); 
71: dest = &dest_copy; 
73: 
74: packetbuf_clear(); 
75: msg = packetbuf_dataptr(); 
76: packetbuf_set_datalen(sizeof(struct route_discovery_packet)); 
77: 
78: msg->type = "0x0" ; 
79: rimeaddr_copy(&msg->dest, dest); 
80: // msg->metric_type ////////// wa have chosen as default metrric type hop_count //////// 
81: msg->route_metric = 0; 
82: msg->hop_count = 0; 
83: msg->hop_limit = MAX_HOP_LIMIT; 
84: 
85: 
86: netflood_send(&c->rreqconn, c->seqno); // Message transmission 
87: c->seqno ++; 
89:} 

这是头文件:

/* This structure points to the information of RREQ/RREP packet*/ 
struct route_discovery_packet { 
    // struct tlv ; 
    char type; 
    uint8_t seqno; 
    uint8_t route_metric; // specifies the route metric of the route 
    char metric_type; // pecifies the type of metric requested by this RREQ 
    uint8_t hop_count; // specifies the total number of hops from the originator 
    uint8_t hop_limit; 
    rimeaddr_t dest; 
    rimeaddr_t originator; 
    rimeaddr_t local_iface_addr; 

}; 
`/ 

这里是编译的结果

route-discovery.c: In function ‘send_rreq’: 
route-discovery.c:76:32: erreur: invalid application of ‘sizeof’ to incomplete type ‘struct route_discovery_packet’ 
route-discovery.c:78:6: erreur: déréférencement d'un pointeur de type incomplet 
route-discovery.c:79:21: erreur: déréférencement d'un pointeur de type incomplet 
route-discovery.c:81:6: erreur: déréférencement d'un pointeur de type incomplet 
route-discovery.c:82:6: erreur: déréférencement d'un pointeur de type incomplet 
route-discovery.c:83:6: erreur: déréférencement d'un pointeur de type incomplet 
route-discovery.c:86:32: erreur: ‘struct route_discovery_conn’ has no member named ‘seqno’ 
route-discovery.c:87:4: erreur: ‘struct route_discovery_conn’ has no member named ‘seqno’ 
+1

专家提示:在编译器命令前使用'LANG = EN'来获得英文输出。 – niklasfi

+0

不要标记垃圾邮件的可见性。我从你的问题中删除了不相关的标签。 – tnw

+1

这是一个重复的话题。 [Here](http://stackoverflow.com/questions/8915230/invalid-application-of-sizeof-to-incomplete-type-with-a-struct),[here](http://stackoverflow.com/questions/17211345/invalid-application-of-sizeof-to-incomplete-type-list-struct-c)和[here](http://stackoverflow.com/questions/12873142/invalid-application-of-sizeof-to-不完全型结构阵列) –

回答

2

这errror意味着没有你的结构的声明是在编译的这一点上是可见的。只要你只需要一个指针,这个效果就很好,但如果你想知道它的大小,你必须有一个定义。

相关问题