Oto minimalny program C do reprodukcji:#including <alsa/asoundlib.h> i <sys/time.h> skutkuje wielokrotnym konfliktu definicji
#include <alsa/asoundlib.h>
#include <sys/time.h>
int main(void)
{
}
ta zostanie skompilowany z gcc -c -o timealsa.o timealsa.c
, ale jeśli to przełącznik -std=c99
, ty pojawia się błąd redefinicji:
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 {
^
Jak mogę rozwiązać ten konflikt, jednocześnie korzystając -std=c99
?
Powinieneś użyć minimalnego standardu main, który jest ** int main (void) {return 0;} ** – Michi
Tak, masz rację (ale to jeszcze jedna linia!) – Lombard
@Michi 'return 0' jest niejawne, jeśli nie występuje w _C99_ (Jakie to oznaczenie to pytanie). Zobacz: http://stackoverflow.com/questions/4138649/why-is-return-0-optional. Nieważne jest problem, ale –