0

使用信号量和 POSIX 线程进行 OS 编程分配。这是我的代码:

#include <pthread.h>
#include <semaphore.h>

sem_t mutex, to_b, to_a;

int main()
{
    // Initialize semaphores
    sem_init(&mutex, 0, 1);
    sem_init(&to_b, 0, 0);
    sem_init(&to_a 0, 0);
}

用我编译gcc main.c -lpthread得到:

main.c: In function 'main':
main.c:11:24: error: expected ')' before numeric constant
main.c:11:24: error: too few arguments to function 'sem_init'
/usr/include/semaphore.h:37:12: note: declared here

知道是什么原因造成的吗?我肯定正确地调用了 sem_init 。

4

3 回答 3

3

中缺少一个逗号

sem_init(&to_a 0, 0);

它应该是

sem_init(&to_a, 0, 0);
于 2013-03-27T04:20:07.440 回答
1
sem_init(&to_a 0, 0);
              ^

你只是少了一个逗号。

于 2013-03-27T04:20:11.440 回答
0

所以看看错误:main.c:11:24: error: too few arguments to function 'sem_init'

第 11 行有一个问题,它“参数太少”。你在 10 号线和 9 号线打同样的电话,对吧?但没有这样的错误,所以请仔细查看第 10 行和第 11 行之间的字符。

你会看到你错过了一个逗号:

sem_init(&to_b, 0, 0);
sem_init(&to_a 0, 0);  // see it's shorter?

应该:

sem_init(&to_a, 0, 0);
于 2013-03-27T04:20:32.360 回答