2013-03-11 10 views
5

Digitando man strptime è necessario che questa funzione abbia dichiarato _XOPEN_SOURCE e incluso l'header time.h. L'ho fatto. Ma, quando provo a compilare il mio codice ottengo:Il compilatore riceve avvisi quando si utilizza la funzione strptime (C)

./check.c:56: avvertimento: dichiarazione implicita di funzione 'strptime'

Guardate il mio codice:

int lockExpired(const char *date, const char *format, time_t current) { 
     struct tm *tmp = malloc(sizeof(struct tm *)); 
     time_t lt; 
     int et; 

     strptime(date, format, tmp); 
     lt = mktime(tmp); 
     et = difftime(current, lt); 

     if (et < 3600) 
       return -et; 

     return 1; 
} 

anche la dichiarazione di funzione è:

char *strptime(const char *s, const char *format, struct tm *tm);

Qualcuno può dirmi da dove viene il mio problema?

risposta

14

Ho trovato che avevo bisogno di definire __USE_XOPEN e anche _GNU_SOURCE per renderlo felice.

+1

Ecco, grazie! È strano che "uomo strptime" sia sbagliato sulla mia macchina Linux; scrive '_XOPEN_SOURCE' che non funziona per me. Detto questo, non sono sicuro di '_GNU_SOURCE' però. '__USE_XOPEN' sembra funzionare da solo per me. – lpapp

+0

assicurati di usare '#define __USE_XOPEN' prima di usare' #include ' –

Problemi correlati