调用sem_init时“预期')'在数字常量之前”

时间:2013-03-27 04:16:56

标签: c posix semaphore

使用信号量和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。

3 个答案:

答案 0 :(得分:3)

中缺少逗号
sem_init(&to_a 0, 0);

应该是

sem_init(&to_a, 0, 0);

答案 1 :(得分:1)

sem_init(&to_a 0, 0);
              ^

你只是错过了一个逗号。

答案 2 :(得分: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);