5

我在老虎上使用 xcode 2.4.1。当我在下面做的时候一切都好。当我做

pthread_mutex_t mute;
ImageMan()
{
    dibSize=0;
    mute  = PTHREAD_MUTEX_INITIALIZER;
}

我得到这两个错误

error: expected primary-expression before '{' token
error: expected `;' before '{' token

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

-edit- 我还没有运行它,但这似乎可以编译。为什么?嗯?

    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    mute = mutex;
4

2 回答 2

17

PTHREAD_MUTEX_INITIALIZER是一个常量初始化器,仅在初始化时有效。它是一个不一定扩展为整数类型的宏。

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

pthread_mutex_init(&mute, NULL);

或者如果您正在动态分配互斥锁:

m = malloc(sizeof(pthread_mutex_t)));
pthread_mutex_init(m, NULL);
于 2008-12-20T13:54:49.887 回答
3
mute = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;

这是此错误的另一种解决方案。

于 2015-07-10T06:11:05.553 回答