Я пытаюсь использовать postgresql вместе с SOCI, создавая их библиотеки с MinGW.
Я столкнулся с следующей проблемой.
PostgreSQL определяет этот strcuture @pthread.h:
#ifndef HAVE_STRUCT_TIMESPEC
#define HAVE_STRUCT_TIMESPEC 1
struct timespec {
long tv_sec;
long tv_nsec;
};
#endif /* HAVE_STRUCT_TIMESPEC */
Но в компилятор есть такая структура @timeb.h
#ifndef _TIMESPEC_DEFINED
#define _TIMESPEC_DEFINED
struct timespec {
time_t tv_sec; /* Seconds */
long tv_nsec; /* Nanoseconds */
};
struct itimerspec {
struct timespec it_interval; /* Timer period */
struct timespec it_value; /* Timer expiration */
};
#endif
Это вызывает дублирование объявления timespec. Мои вопросы:
Я использую PostgreSQL 9.3 x86
time_t
и long
может быть проблемой, хотя я считаю это очень маловероятным. Это связано с тем, что time_t
обычно определяется как псевдоним long
.
Вместо того, чтобы менять макросы в библиотеках postgres, я сначала попытался бы определить макрос, -D
флаг -D
компилятору.
g++ -DHAVE_STRUCT_TIMESPEC -o prog file.cc