При компиляции с gcc 4.4.3 в Ubuntu 10.04.2 x86_64 я получаю следующее предупреждение:
warning: comparison between pointer and integer
для этой строки:
if (strptime(date_time, "%d-%b-%y %T", &tm) == NULL) {
Если изменить NULL на 0,предупреждение уходит.Но на странице man для strptime говорится, что при ошибке она возвращает NULL.Я включаю <time.h>
с #define __USE_XOPEN 1
в предыдущей строке.Я также пытался #define _XOPEN_SOURCE
.
Спасибо за ваше время.
РЕДАКТИРОВАТЬ
Полный включает в себя:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#define __USE_XOPEN 1 /* needed for strptime */
#include <time.h>
#include <arpa/inet.h>
#include <errno.h>
#include "recv.h"
#include "tcp.h"
#include "types.h"
РЕДАКТИРОВАТЬ
Следующий код выдает то же предупреждение:
#define __USE_XOPEN 1 /* needed for strptime */
#include <time.h>
#include <stdio.h>
int main()
{
struct tm tm;
char date_time[] = "3-May-11 12:49:00";
if (strptime(date_time, "%d-%b-%y %T", &tm) == NULL) {
fprintf(stderr, "Error: strptime failed matching input\n");
}
return 0;
}
РЕДАКТИРОВАТЬ, РЕДАКТИРОВАТЬ
Но изменение его на _XOPEN_SOURCE сработало!И перемещение определения в начало программы исправило оригинал.