-
structure innaccessible?
Salut!
J'ai une structure iphdr mais je n'arrive pas à l'utiliser facilement!
Code:
struct iphdr *header;
marche mais
Code:
struct iphdr header;
me renvoie l'erreur de compil:
Code:
19 C:\DOCUME~1\PROPRI~1\Bureau\main_socket_raw.cpp aggregate `iphdr header' has incomplete type and cannot be defined
1) Pourquoi ne peut on pas instancié des structures de ce type?
De plus
Code:
sizeof(struct iphdr)
n'est pas accepté et j'ai l'erreur de compil:
Code:
20 C:\DOCUME~1\PROPRI~1\Bureau\main_socket_raw.cpp invalid application of `sizeof' to incomplete type `iphdr'
2) Pourquoi ne peut on pas récupérer la taille de cette structure?
Merci d'avance.
-
Est-ce que le fichier .h où est définie cette structure a été inclu ? D'après la description de ton problème, on dirait qu'il ne l'a pas été, mais que le type struct iphdr a fait l'objet d'une prédéclaration.
-
Montre le code qui définit ta structure. On dirait simplement qu'elle n'est pas définie.
-
En fait cette structure est une entete IP pour un socket raw.
Mais j'ai fouillé dans winsock2.h et rien donc je crois qu'il faut la définir soi-même.
Mais ce code d'erreur signifie donc:"structure non trouvée"?
-
Bon finalement j'ai créé un nouveau header avec la definition de la structure dedans.
Ca compile.
Reste à savoir si la structure est valide.
-
Oui apparemment. D'ailleurs petite remarque : tu n'as pas besoin de préfixer avec "struct" chaque fois que tu déclares un iphdr.
Avec ça tu auras aussi l'erreur lorsque tu déclare le pointeur. Ici ça passe parce que c'est pris comme une définition incomplète (pour les pointeurs ça suffit).
Il te faut donc trouver la déclaration de cette structure.
-
Je préfixe pour éclaircir le code et puis c'est une bonne habitude à prendre pour quand je fait des progs en C.
Merci de votre aide.