Bonjour;
int main ()
{
struct timeval tv ;
struct timezone tz;
gettimeofday(&tv, &tz) ;
}
Compilation: gcc temp.c
S'il vous plait j'ai pas compris cette erreur:
error: storage size of ‘tz’ isn’t known
Merci
Cordialement
Version imprimable
Bonjour;
int main ()
{
struct timeval tv ;
struct timezone tz;
gettimeofday(&tv, &tz) ;
}
Compilation: gcc temp.c
S'il vous plait j'ai pas compris cette erreur:
error: storage size of ‘tz’ isn’t known
Merci
Cordialement
Ça veut dire « La taille de stockage de tz n'est pas connue ».
En écrivant « struct timezone tz », tu déclares une variable de type « struct timezone ». Mais, ce faisant, tu ne définis pas le contenu de la structure (parce qu'il est censé être connu en amont). Cependant, cette déclaration reste légale en C parce qu'on sait que l'on se réfère à une structure de type « timezone », quelle qu'elle soit.
En fait, c'est surtout utile avec des pointeurs, et cela sert principalement à déclarer des structures qui pourront se faire mutuellement référence, voire s'auto-référencer, ce qui nécessaire pour faire des listes chaînées par exemple.
Mais là, tu demandes à instancier une vraie variable, pas un pointeur. Et si le contenu de la structure n'a pas été défini, on ne peut réserver en mémoire l'espace nécessaire pour ta variable puisqu'on ne sait pas quelle taille fait ta structure.
En fait, la vraie question est surtout « comment se fait-il qu'on ne connaisse pas le contenu de cette structure ? ». Parce qu'elle n'a pas été définie. Et pourquoi n'a-t-elle pas été définie ? Probablement parce que tu as dû oublier d'ajouter
Code:#include <sys/time.h>
… en début de fichier.
Bonjour;
J'ai ajouté #include <sys/time.h> et c'est résolu.
Merci :ccool:
Cordialement
De rien, mais c'est mieux si tu t'assures d'avoir bien compris pourquoi…