Perché gcc non riesce a trovare l'interfaccia random() quando -std=c99 è impostato?
Faccio "#include <stdlib.h>"
nella parte superiore della sorgente.
Esempio di compilazione:
/usr/bin/colorgcc -std=c99 -fgnu89-inline -g -Wall -I/usr/include -I./ -I../ -I../../ -I../../../ -I../../../../ -O3 -o f8 f8.c
In file included from f8.c:7:
ctype-cmp.c: In function ‘randomized’:
ctype-cmp.c:48: warning: implicit declaration of function ‘random’
ctype-cmp.c: In function ‘main’:
ctype-cmp.c:153: warning: implicit declaration of function ‘srandom’
[email protected]:t$
Quando spengo -std=c99, la funzione isfinite() non può essere trovata. Quindi voglio usare -std=c99 per questo e altri motivi. C'è qualche trucco che mi sfugge?
Risposte:
man srandom
dice che la funzione non parte di C99 ma parte di POSIX.
Attiva _BSD_SOURCE
o _XOPEN_SOURCE >= 500
o qualsiasi altra macro di test di funzionalità adatta che dichiari la funzione srandom/random (vedi man feature_test_macros
e man srandom
).
Questo ha buone possibilità, ma devi anche capire le macro che sono definite/non definite implicitamente leggendo le manpage sopra.
/usr/bin/colorgcc -std=c99 -D_XOPEN_SOURCE=600 -fgnu89-inline -g -Wall
-I/usr/include -I./ -I../ -I../../ -I../../../ -I../../../../ -O3 -o f8 f8.c