time_t et localtime : assignment from incompatible pointer type - C - Programmation
Marsh Posté le 26-10-2005 à 16:31:19
bipeuh a écrit :
|
Pourquoi déclarer des fonctions qui sont sûrement déjà déclarées dans <sys/time.h>"
bipeuh a écrit :
|
Pourquoi redéfinir "struct tm" alors qu'elle doit probablement être déjà définie dans <sys/time.h> ???
Marsh Posté le 26-10-2005 à 16:42:56
pour les fonctions c'est pour éviter le warning à la compile...
pour la structure, je n'ai pas le choix : erreur à la compil dereferencing pointer to incomplete type
Marsh Posté le 26-10-2005 à 19:25:37
ReplyMarsh Posté le 26-10-2005 à 20:47:32
Sve@r a écrit : Pourquoi déclarer des fonctions qui sont sûrement déjà déclarées dans <sys/time.h>" |
time.h
Taz a écrit : si ça warn c'est tu inclues pas ce qu'il faut. le warning final le confirme. |
+1.
struct tm, time() et autres localtime() sont définis dans time.h, pas dans sys/time.h.
Marsh Posté le 27-10-2005 à 11:09:28
j'ai changé mon include sys/time.h par time.h et ça marche nickel
merci pour le tuyau
au passage, c'est quoi la différence fondamentale entre les deux?
Marsh Posté le 27-10-2005 à 12:24:02
- c'est quoi la difference entre string.h et stdlib.h
- bah c'est pas le même fichier
- et sinon ?
time.h est l'include standard, sys/time.h doit etre utilisé en interne par ta plateforme, ou permet de faire du spécifique.
Marsh Posté le 27-10-2005 à 15:02:14
blackgoddess a écrit : - c'est quoi la difference entre string.h et stdlib.h |
Marsh Posté le 31-10-2005 à 01:53:07
Sve@r a écrit : Pourquoi déclarer des fonctions qui sont sûrement déjà déclarées dans <sys/time.h>" |
Non. Elles sont sûrement déclarées dans <time.h>
Citation : Pourquoi redéfinir "struct tm" alors qu'elle doit probablement être déjà définie dans <sys/time.h> ??? |
Non. Elle est sûrement déclarée dans <time.h>
Marsh Posté le 31-10-2005 à 11:47:22
Emmanuel Delahaye a écrit : Non. Elles sont sûrement déclarées dans <time.h>
Non. Elle est sûrement déclarée dans <time.h> |
J'ai répondu assez vite sans contrôler le détail des include de ce code.
L'idée était de dire qu'il est inutile de redéfinir des choses déjà définies dans les include du pgm. Evidemment ce n'était pas les bons include mais le fond est bon...
Marsh Posté le 26-10-2005 à 16:01:46
#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
extern time_t time (time_t *__timer) __THROW;
extern struct tm *localtime (__const time_t *__timer) __THROW;
int TOIHM(int Contexte)
{
FILE *fp = fopen("/var/log/journallog.ini", "r+" );
time_t timestamp;
struct tm
{
int tm_sec; /* secondes */
int tm_min; /* minutes ( 0 -> 59 ) */
int tm_hour; /* heure (0 -> 23 ) */
int tm_mday; /* jour du mois (1 -> 31) */
int tm_mon; /* mois ( 0 -> 11 ) */
int tm_year; /* annee ( 1970 -> présent ) */
int tm_wday; /* jour de la semaine ( di:0 -> sa:6 ) */
int tm_yday; /* jour de l'année (1/1:0 -> 31/12:364) */
int tm_isdst; /* lié à 'daylight saving time*/
};
struct tm *t; //pointeur sur la structure
const char *NomJourSemaine[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
const char *NomMois[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug","Sep", "Oct", "Nov", "Dec"};
//Contrôle de l'ouverture du fichier
if ( fp == NULL )
{
//printf("impossible d'ouvrir le fichier journallog.ini" );
return 0;
}
//On se place à la fin du fichier
fseek(fp,0,SEEK_END);
//Lecture de la date et de l'heure
timestamp = time (NULL);
t = localtime(×tamp);
//Ecriture de l'évènement
fprintf(fp,"\n%s %s %02d %04d\t%02d:%02d:%02d\t\tTime Out IHM %d\n",NomJourSemaine[t->tm_wday],NomMois[t->tm_mon], t->tm_mday, 1900+t->tm_year, t->tm_hour, t->tm_min, t->tm_sec, Contexte);
fclose(fp);
return 1;
}
à la compile, j'ai un warning : assignment from incompatible pointer type à la ligne t = localtime(×tamp);
quelqu'un peut m'aider car je sèche un peu...