私はセマフォの使用を含む学校向けのプロジェクトを完了しようとしています。私は適切なヘッダファイル(pthreadのためのもの)を加えました。私は適切なライブラリにもコンパイラを指摘しました。これはCで書かれています。はい、これは割り当てですが、私は実装の助けを求めているわけではないことを知っておいてください。むしろ、このひどいコンパイルエラーを理解できないようです。ここでCプログラムをコンパイルするときにエラーが発生する
は、セマフォの「シンプル」宣言している私のコードの50を介してライン47、であり、それらを初期化:
sem_t empty;
sem_init(&empty, 0, 5);
sem_t full;
sem_init(&full, 0, 0);
ここ
私が試してみて、ライン48用にコンパイルするとき、私は取得していますメッセージです。私はライン50のための同じセットを取得しますが、簡潔にするためにそれを投稿しませんでした:
|48|error: expected declaration specifiers or ‘...’ before ‘&’ token|
|48|error: expected declaration specifiers or ‘...’ before numeric constant|
|48|error: expected declaration specifiers or ‘...’ before numeric constant|
|48|warning: data definition has no type or storage class|
|48|warning: type defaults to ‘int’ in declaration of ‘sem_init’|
私はmain()関数の外に、これらすべてを宣言しました。これらのエラーを解決するにはどうすればよいですか?私はsem_tのデータ型を示していないようだが、私が含まれているsemaphore.hで定義されているのでうんざりです。私はgccを使っているUbuntuの下でCode :: Blocksを使ってこれをコンパイルしています。このエラーは、コマンドラインからコンパイルしても発生します。
ご協力いただきありがとうございます。
これはおそらく答えです。ファンクションコールはファイルスコープに置くことはできません。ファンクションコールは別のファンクション内にある必要があります。 –
と、正しいライブラリにリンクすることを忘れないでください。... -lrt here – Ben
@Andrew:いいコールです。私はあなたのコメントの側面を含めるために私の答えを修正しました。 –