pthread_mutex_t init error

hlasů
4

Já jsem za použití Xcode 2.4.1 na tygra. Když jsem si pod je vše v pořádku. když dělám

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

Mám tyto dvě chyby

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

Nevím proč. Pokud však i do pthread_mutex_t mute = PTHREAD_MUTEX_INITIALIZER; to funguje dobře. Proč?

-edit- I havent to běžel, ale zdá se, že kompilace. Proč? co?

    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    mute = mutex;
Položena 20/12/2008 v 14:04
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
16

PTHREAD_MUTEX_INITIALIZERje konstanta Inicializátor, platná, pokud jen inicializaci. Jedná se o makro, které nemusí nutně rozšiřovat do integrální typu.

Váš mute=mutex;je invalid- místo toho byste měli použít:

pthread_mutex_init(&mute, NULL);

nebo pokud jste přidělování mutexy dynamicky:

m = malloc(sizeof(pthread_mutex_t)));
pthread_mutex_init(m, NULL);
Odpovězeno 20/12/2008 v 14:54
zdroj uživatelem

hlasů
1
mute = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;

Jedná se o další řešení této chyby.

Odpovězeno 10/07/2015 v 06:11
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more