Bonjour,
La déclaration de t est struct tm *t;. C'est donc un pointeur sur tm. Le code qui suit est gmtime_r(×tamp, &t). On passe donc l'adresse du pointeur.
Pourtant le prototype est :
struct tm *gmtime_r( const time_t *timer, struct tm *buf );
C'est à dire un simple pointeur sur une structure tm. Sauf erreur, je pense que * de struct tm *t; est de trop (de plus qui allouerait autrement l'espace nécessaire ?).
Enfin l'écriture pourrait être simplifiée. Par ailleurs, transformer la date en champs hexa décalés, 0x0DDMYYYY, permet les mêmes opérations que la version décimale mais coûte beaucoup moins cher en temps:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include "date_heure.h"
#include <time.h>
#include <stdio.h>
int getDate(){
time_t timestamp;
struct tm t;
timestamp = time(NULL);
if(gmtime_r(×tamp, &t)){ //fonction évitant les problèmes avec les threads
return t->tm_year + ((t->tm_mon) + (t->tm_mday) << 8) << 16; // en général on préfère YYYYMDD qui permet plus facilement des comparaisons
return 0;
} |
Si je ne me trompe pas, il est possible que les problèmes viennent de là.
Salutations
Partager