Ho iniziato a studiare i temporizzatori POSIX, quindi ho iniziato anche a fare degli esercizi, ma ho avuto subito qualche problema con il compilatore. Durante la compilazione di questo codice, ricevo strani messaggi su macro come CLOCK_MONOTONIC. Quelli sono definiti in varie librerie come time.h ecc. Ma il compilatore mi dà errori come se non fossero definiti.Costanti non caricate dal compilatore
E 'strano perché sto usando un Fedora 16, e alcuni dei miei amici con Ubuntu ottenere errori di compilazione in meno rispetto I: -O
sto compilazione con gcc -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -lrt
Qui gli errori che ottengo:
struct sigevent sigeventStruct
dà:storage size of ‘sigeventStruct’ isn’t known unused variable ‘sigeventStruct’ [-Wunused-variable] Type 'sigevent' could not be resolved unknown type name ‘sigevent’
sigeventStruct.sigev_notify = SIGEV_SIGNAL
dà:‘SIGEV_SIGNAL’ undeclared (first use in this function) request for member ‘sigev_notify’ in something not a structure or union Field 'sigev_notify' could not be resolved
if(timer_create(CLOCK_MONOTONIC, sigeventStruct, numero1) == -1)
dà:implicit declaration of function ‘timer_create’ [-Wimplicit-function- declaration] ‘CLOCK_MONOTONIC’ undeclared (first use in this function) Symbol 'CLOCK_MONOTONIC' could not be resolved
Ecco il codice:
#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;
}
Solo un suggerimento, invece di avere gli errori in forma di punti, basta copiarli esattamente come sono all'interno di un blocco '
' nella domanda. –Ok la prossima volta terrò in considerazione il tuo suggerimento –