2014-07-11 90 views
0

我想用soc和postgresql一起使用MinGW構建它們的庫。修復lib兼容性C++ mingw和postgresql

我遇到了以下問題。

PostgreSQL的定義該晶格結構@ 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中編輯宏以避免聲明兩次嗎?
  • 如果是這樣,這將time_t的timespec.tv_spec的類型差異是一個問題?
  • 什麼是解決這種情況的好方法?

我使用PostgreSQL 9.3 x86的

回答

1

time_tlong可能是一個問題,但我覺得不太可能。這是因爲time_t通常被定義爲long的別名。

而不是改變postgres的庫中的宏,我會首先嚐試定義傳遞-D標誌給編譯器的宏。

g++ -DHAVE_STRUCT_TIMESPEC -o prog file.cc 
+0

您好!謝謝您的回覆!我怎樣才能傳遞這些參數來建立與cmake? – RafaelTSCS

+1

你的答案在這裏:http://stackoverflow.com/questions/5352074/how-to-create-a-c-define-for-a-certain-target-using-cmake –