2013-03-11 21 views
5

man strptime yazarak, bu işlevin _XOPEN_SOURCE bildirilmiş olması ve time.h başlığının dahil edilmiş olması gerekir. Yaptım. Kodumu derlemeye çalıştığınızda Ama olsun:Derleyici, strptime işlevini kullanırken uyarı alır (C)

./check.c:56: Uyarı:

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; 
} 
: function 'strptime' benim kodu

Look örtük bildirim

Ayrıca işlev bildirimi:

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

Sorunun nereden geldiğini bana kim söyleyebilir?

cevap

14

Mutlu olmak için __USE_XOPEN ve ayrıca _GNU_SOURCE tanımlamamız gerektiğini buldum.

+1

Öyleydi, teşekkürler! Linux makinemde 'insanın strptime' yanlış olması garip; Benim için çalışmayan _XOPEN_SOURCE' yazıyor. Bununla birlikte, '_GNU_SOURCE' hakkında emin değilim. '__USE_XOPEN' benim için kendi başına çalışıyor gibi görünüyor. – lpapp

+0

'#include 'işlevini kullanmadan önce' #define __USE_XOPEN' kullandığınızdan emin olun –

İlgili konular