pthread_mutex_t初始化错误

4 mutex initialization pthreads

我在老虎身上使用xcode 2.4.1.当我在下面做的一切都很好.当我做

pthread_mutex_t mute;
ImageMan()
{
    dibSize=0;
    mute  = PTHREAD_MUTEX_INITIALIZER;
}
Run Code Online (Sandbox Code Playgroud)

我得到了这两个错误

error: expected primary-expression before '{' token
error: expected `;' before '{' token
Run Code Online (Sandbox Code Playgroud)

我不知道为什么.但是,如果我做pthread_mutex_t静音= PTHREAD_MUTEX_INITIALIZER; 它工作正常.为什么?

-edit-我没有运行它,但这似乎编译.为什么?是吧?

    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    mute = mutex;
Run Code Online (Sandbox Code Playgroud)

geo*_*car 16

PTHREAD_MUTEX_INITIALIZER是一个常量初始值设定项,仅在初始化时有效.它是一个宏,不一定扩展为整数类型.

mute=mutex;是无效的 - 你应该使用:

pthread_mutex_init(&mute, NULL);
Run Code Online (Sandbox Code Playgroud)

或者如果你动态分配互斥量:

m = malloc(sizeof(pthread_mutex_t)));
pthread_mutex_init(m, NULL);
Run Code Online (Sandbox Code Playgroud)