2013-03-11 11 views
5

Wpisanie man strptime oznacza, że ​​funkcja ta musi zadeklarować _XOPEN_SOURCE i uwzględnić nagłówek time.h. Ja to zrobiłem. Ale gdy próbuję skompilować mój kod otrzymuję:Kompilator otrzymuje ostrzeżenia podczas korzystania z funkcji strptime (C)

./check.c:56: ostrzeżenie: niejawna deklaracja funkcji 'strptime'

Spójrz na mój kodu:

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; 
} 

również deklaracja funkcji to:

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

Czy ktoś może mi powiedzieć skąd bierze się mój problem?

Odpowiedz

14

Znalazłem, że muszę zdefiniować __USE_XOPEN, a także _GNU_SOURCE, aby było ono szczęśliwe.

+1

To wszystko, dzięki! To dziwne, że 'strptime man 'jest błędne na mojej maszynie Linux; zapisuje '_XOPEN_SOURCE', które nie działa dla mnie. Mimo to nie jestem pewien co do '_GNU_SOURCE'. "__USE_XOPEN" wydaje się działać samodzielnie dla mnie. – lpapp

+0

upewnij się, że używasz '#define __USE_XOPEN' zanim użyjesz' #include ' –