C 错误 : expected expression before ‘{’ token

标签 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;
}   

最佳答案

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

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

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

关于C 错误 : expected expression before ‘{’ token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22742254/

相关文章:

linux - sudo apt upgrade 会更新我的微码吗?

c - 这个 C 代码片段有什么作用

c++ - C 和 C++ 中的标准头文件列表

c - 如何在 32 位中引发浮点错误

c - 如何将字符串存储在数组中?

linux - 提取音频,再次操作和合并

linux - Bash 脚本 - 运行应用程序的当前或新实例

c# - 根据作为字符串列表的属性过滤数据的表达式

python - 数学表达式评估

c - "sizeof"的结果取决于括号的位置。为什么?