Ecco il programma minimo C per riprodurre:#including <alsa/asoundlib.h> e <sys/time.h> risultati in molteplici conflitti definizione
#include <alsa/asoundlib.h>
#include <sys/time.h>
int main(void)
{
}
Questo compilerà con gcc -c -o timealsa.o timealsa.c
, ma se si include l'interruttore -std=c99
, è un errore di ridefinizione:
In file included from /usr/include/sys/time.h:28:0,
from timealsa.c:3:
/usr/include/bits/time.h:30:8: error: redefinition of ‘struct timeval’
struct timeval
^
In file included from /usr/include/alsa/asoundlib.h:49:0,
from timealsa.c:2:
/usr/include/alsa/global.h:138:8: note: originally defined here
struct timeval {
^
Come posso risolvere questo conflitto pur utilizzando -std=c99
?
È necessario utilizzare lo standard minimo di main che è ** int main (void) {return 0;} ** – Michi
Sì, hai ragione (ma questa è un'altra riga!) – Lombard
@Michi il 'return 0' è implicito se non presente in _C99_ (con cui questa domanda è contrassegnata con). Vedi: http://stackoverflow.com/questions/4138649/why-is-return-0-optional. Il vuoto è un problema anche se –