c错误:'{'标记之前的预期表达式

时间:2014-03-30 09:14:01

标签: c linux expression mutex

我必须编写一个带有互斥量表的程序。这段代码适用于cygwin,但它不适用于linux。我不明白,为什么它不起作用。谁能帮我? 提前致谢。 错误:

pub.c:16:15: error: expected expression before ‘{’ token

代码:

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

pthread_mutex_t* mutex;

int main()
{
    int n;
    int i;
    scanf("%d", &n);

    mutex = malloc(n*sizeof(pthread_mutex_t));
    for (i = 0; i < n; i++)
    {
        mutex[i] = PTHREAD_MUTEX_INITIALIZER; // <-- Error
    }

    free(mutex);
    return 0;
}   

1 个答案:

答案 0 :(得分:0)

你应该在这里使用pthread_mutex_init代替PTHREAD_MUTEX_INITIALIZER

pthread_mutex_init ( &(mutex[i]), NULL);

PTHREAD_MUTEX_INITIALIZER宏初始化静态互斥锁互斥锁,将其属性设置为默认值。此宏只应用于静态互斥锁,因为不会执行错误检查。