C++ 我的代码出错:错误:在‘;之前应该有主表达式’;代币

C++ 我的代码出错:错误:在‘;之前应该有主表达式’;代币,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

我有两个文件如下

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 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线程