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 に答える