【问题标题】:c error: expected expression before ‘{’ token [duplicate]c错误:“{”标记之前的预期表达式[重复]
【发布时间】:2014-03-30 09:14:00
【问题描述】:

我必须编写一个带有互斥表的程序。此代码适用于 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;
}   

【问题讨论】:

    标签: c linux expression mutex


    【解决方案1】:

    你应该在这里使用 pthread_mutex_init 而不是 PTHREAD_MUTEX_INITIALIZER

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

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

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 2015-03-31
      • 2012-07-08
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 2021-02-19
      相关资源
      最近更新 更多