Константы не загружаются компилятором

Я начал изучать таймеры 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;
}
9
задан Daniel Fischer 16 January 2012 в 15:44
поделиться