Field C: has an incomplete type

Sorry if this was previously asked.

I get the following error when compiling with make:

.../inc/intModIp.h:418: error: field 'cnc_id' has incomplete type ../inc/intModIp.h:419: error: field 'cnc_key' has incomplete type ../inc/intModIp.h:421: error: field 'fin_id' has incomplete type ../inc/intModIp.h:422: error: field 'fin_key' has incomplete type ../inc/intModIp.h:424: error: field 'remote_id' has incomplete type ../inc/intModIp.h:426: error: field 'cnc_ipsec_peer' has incomplete type ../inc/intModIp.h:427: error: field 'fin_ipsec_peer' has incomplete type ../inc/intModIp.h:428: error: field 'remote_ipsec_peer' has incomplete type ../inc/intModIp.h:430: error: field 'cnc_link' has incomplete type ../inc/intModIp.h:431: error: field 'cnc_esp' has incomplete type ../inc/intModIp.h:433: error: field 'fin_link' has incomplete type ../inc/intModIp.h:434: error: field 'fin_esp' has incomplete type 

The corresponding code in the header file is as follows:

 #if 1 || defined(SYMB_IPSEC) struct ipsec_state { int enabled; int active; int timer; /* IPSEC_SOCKET_STATES */ struct ipsec_id cnc_id; struct ipsec_priv_key cnc_key; struct ipsec_id fin_id; struct ipsec_priv_key fin_key; struct ipsec_id remote_id; struct ipsec_peer cnc_ipsec_peer; struct ipsec_peer fin_ipsec_peer; struct ipsec_peer remote_ipsec_peer; struct ipsec_ike_link cnc_link; struct ipsec_esp_sa cnc_esp; struct ipsec_ike_link fin_link; struct ipsec_esp_sa fin_esp; } ipsec; #endif 

Can someone please help me with this. Please let me know if any other information is required.

Thank you Sunny

+7
source share
4 answers

The problem may be that all of these structures are announced ahead.

Is header included after struct ipsec_state ?

/ * ah * /

 struct a { int i; }; 

/ * demo.c * /

 struct b { struct a A; }; #include "ah" int main(void) { return 0; } 

Output:

 david@debian :~$ gcc -std=c99 -Wall -pedantic -W -Wextra -o demo demo.c demo.c:2:11: error: field 'A' has incomplete type 
+7
source

The compiler cannot find the specified structure definitions ( ipsec_id ... ipsec_esp_sa ), you may need to include the related header files

+3
source

One source of this error (the field is of an incomplete type) is when you use the struct keyword before an alias (a variable defined via typedef). Try removing the struct keyword.

0
source

enter a pointer to a structure element.

 struct ipsec_state { int enabled; int active; int timer; /* IPSEC_SOCKET_STATES */ struct ipsec_id *cnc_id; struct ipsec_priv_key *cnc_key; struct ipsec_id *fin_id; struct ipsec_priv_key *fin_key; struct ipsec_id *remote_id; struct ipsec_peer *cnc_ipsec_peer; struct ipsec_peer *fin_ipsec_peer; struct ipsec_peer *remote_ipsec_peer; struct ipsec_ike_link *cnc_link; struct ipsec_esp_sa *cnc_esp; struct ipsec_ike_link *fin_link; struct ipsec_esp_sa *fin_esp; } ipsec; #endif 
0
source

All Articles