Я начал изучать таймеры POSIX, поэтому я также начал выполнять некоторые упражнения, но у меня сразу возникли некоторые проблемы с компилятором. При компиляции этого кода я получаю странные сообщения о макросах типа CLOCK_MONOTONIC. Они определены в различных библиотеках, таких как time.h и т. Д., Но компилятор выдает мне ошибки, как если бы они не были определены.
Это странно, потому что я использую Fedora 16, и некоторые из моих друзей с Ubuntu получают меньше ошибок компилятора, чем я: -O
Я компилирую с помощью gcc -O0 -g3 -Wall -c - fmessage-length = 0 -std = c99 -lrt
Вот ошибки, которые я получаю:
struct sigevent sigeventStruct
дает :
размер хранилища 'sigeventStruct' неизвестен
неиспользуемая переменная «sigeventStruct» [-Wunused-variable]
Тип 'sigevent' не может быть разрешен
неизвестное имя типа "sigevent"
sigeventStruct.sigev_notify = SIGEV_SIGNAL
дает :
‘SIGEV_SIGNAL’ необъявленный (первое использование в этой функции)
запрос на членство "sigev_notify" не в структуре или объединении
Поле 'sigev_notify' не может быть разрешено
if (timer_create (CLOCK_MONOTONIC, sigeventStruct, numero1) == -1)
дает :
неявное объявление функции «timer_create» [-Wimplicit-function- декларация]
«CLOCK_MONOTONIC» не объявлен (первое использование в этой функции)
Не удалось разрешить символ "CLOCK_MONOTONIC"
Вот код:
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <signal.h>
int main()
{
timer_t numero1;
struct sigevent sigeventStruct;
sigeventStruct.sigev_notify = SIGEV_SIGNAL;
if(timer_create(CLOCK_MONOTONIC, sigeventStruct, numero1) == -1)
{
printf( "Errore: %s\n", strerror( errno ) );
}
return 0;
}