2013-03-11 12 views
5

man strptimeと入力すると、この関数は_XOPEN_SOURCEを宣言し、time.hヘッダをインクルードする必要があります。やったよ。私は私のコードをコンパイルしようとする。しかし、私が手:strptime関数(C)を使用しているときにコンパイラが警告を受け取る

./check.c:56:警告:私のコードでの関数の暗黙的な宣言 'のstrptime'

ルック:

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

また、関数宣言がある:

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

誰かが私の問題がどこから来たのか教えていただけますか?

答えて

14

私は、__USE_XOPENとそれに満足するために_GNU_SOURCEを定義する必要があることがわかりました。

+1

これは、ありがとう!私のLinuxマシンで 'man strptime'が間違っているのは不思議です。私にとってはうまくいかない '_XOPEN_SOURCE'を書いています。つまり、私は '_GNU_SOURCE'についてはよく分かりません。 '__USE_XOPEN'は自分にとってはうまくいくようです。 – lpapp

+0

'#include 'を使う前に '#define __USE_XOPEN'を使うようにしてください –

関連する問題