ошибка инициализации pthread_mutex_t

Я использую 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 mute = PTHREAD_MUTEX_INITIALIZER; это работает нормально. Почему?

-edit- Я не запускал его, но, похоже, он компилируется. Почему? Хм?

    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    mute = mutex;

person Community    schedule 20.12.2008    source источник


Ответы (2)


PTHREAD_MUTEX_INITIALIZER — константный инициализатор, допустимый только при инициализации. Это макрос, который не обязательно расширяется до целочисленного типа.

Ваш mute=mutex; недействителен - вместо этого вы должны использовать:

pthread_mutex_init(&mute, NULL);

или если вы выделяете мьютексы динамически:

m = malloc(sizeof(pthread_mutex_t)));
pthread_mutex_init(m, NULL);
person geocar    schedule 20.12.2008

mute = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;

Это еще одно решение для этой ошибки.

person rashok    schedule 10.07.2015
comment
Всегда старайтесь дать какое-то объяснение ответа. - person serenesat; 10.07.2015