使用信号量和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。
答案 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);