C++ 我的代码出错:错误:在‘;之前应该有主表达式’;代币
我有两个文件如下 ppnfs_mutex.hC++ 我的代码出错:错误:在‘;之前应该有主表达式’;代币,c++,pthreads,mutex,C++,Pthreads,Mutex,我有两个文件如下 ppnfs_mutex.h ... struct ppnfs_mutex_t { pthread_mutex_t mutex; pthread_t owner; const char* context; }; ... ppnfs_mutex.cc #define PPNFS_MUTEX_INITIALIZER \ { .mutex = PTHREAD_MUTEX_INITIALIZER, .owner = 0, .context = NULL
...
struct ppnfs_mutex_t
{
pthread_mutex_t mutex;
pthread_t owner;
const char* context;
};
...
ppnfs_mutex.cc
#define PPNFS_MUTEX_INITIALIZER \
{ .mutex = PTHREAD_MUTEX_INITIALIZER, .owner = 0, .context = NULL, }
struct ppnfs_mutex_t ppnfs_metadata_mutex = PPNFS_MUTEX_INITIALIZER; // line 6
我使用g++
编译此文件,其中有一条错误消息:
ppnfs_mutex.cc:6:47: error: expected primary-expression before ‘.’ token
<> P>代码有什么问题? < P>允许初始化的方式在C中,而不是C++中。 在C++中,要么初始化而不命名字段,并且希望没有人重新排序它们:
#define PPNFS_MUTEX_INITIALIZER {PTHREAD_MUTEX_INITIALIZER, 0, NULL}
或者提供构造函数或工厂函数,或者(如果使用C++11)使用标准线程库而不是posix线程