Я пытаюсь завершить проект для школы, включающий использование семафоров. Я включил правильные заголовочные файлы (плюс один для pthreads). Я также указал компилятору на правильные библиотеки. Это написано на C. Да, это задание, но, пожалуйста, учтите, что я не ищу помощи в реализации, скорее я не могу понять эту чертову ошибку компиляции.
Вот строки с 47 по 50 моего кода, которые являются «простыми» объявлениями семафоров и их инициализации:
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, который я включил. Я компилирую это используя Code :: Blocks в Ubuntu, который использует gcc. Эта ошибка возникает даже при компиляции из командной строки.
Заранее спасибо за помощь.