1. 程式人生 > >TNonblockingServer.h:76:23: 錯誤:一個宣告指定了多個型別 英文提示 multiple types in one declaration

TNonblockingServer.h:76:23: 錯誤:一個宣告指定了多個型別 英文提示 multiple types in one declaration

錯誤資訊:

/usr/local/include/thrift/server/TNonblockingServer.h:76:23: 錯誤:一個宣告指定了多個型別  typedef THRIFT_SOCKET evutil_socket_t

其中的相關程式碼如下:

#ifdef LIBEVENT_VERSION_NUMBER
#define LIBEVENT_VERSION_MAJOR (LIBEVENT_VERSION_NUMBER >> 24)
#define LIBEVENT_VERSION_MINOR ((LIBEVENT_VERSION_NUMBER >> 16) & 0xFF)
#define LIBEVENT_VERSION_REL ((LIBEVENT_VERSION_NUMBER >> 8) & 0xFF)
#else
// assume latest version 1 series
#define LIBEVENT_VERSION_MAJOR 1
#define LIBEVENT_VERSION_MINOR 14
#define LIBEVENT_VERSION_REL 13
#define LIBEVENT_VERSION_NUMBER                                                                    \
  ((LIBEVENT_VERSION_MAJOR << 24) | (LIBEVENT_VERSION_MINOR << 16) | (LIBEVENT_VERSION_REL << 8))
#endif

#if LIBEVENT_VERSION_NUMBER < 0x02000000
typedef THRIFT_SOCKET evutil_socket_t;
#endif

錯誤原因分析

根據提示這是個語法錯誤:

1、重名問題,造成了重複定義

2、在相關的定義後面缺少分號“;”,導致語法錯誤

3、 libevent版本定義問題 在標頭檔案中加入正確的定義亦可,比如在自己的標頭檔案中加入

#ifndef LIBEVENT_VERSION_NUMBER
#define #ifdef LIBEVENT_VERSION_NUMBER 0x02100000
#endif

沒有找到語法的源頭,暫時先用這種方式解決一下燃眉之急。