Domanda

ho letto circa le bandiere usate nel GCC, e letto un reccommendation da usare gcc -ansi -pedantic -Wall file1 [file2 [file3...]] -o output. Per la qualità della causa del mio codice, per tenerlo standard e ottenere tutti gli avvertimenti su di esso.

Bene, sulla compilazione con -ansi ... Se includo <stdlib.h>, gcc mi dà questo errore:

In file included from ansi.c:2: C:/c/bin/../lib/gcc/mingw32/3.4.5/../../../../include/stdlib.h:317: error: syntax error before "double"

Quella linea in questo:

inline double __cdecl __MINGW_NOTHROW strtod (const char* __restrict__ __nptr, char** __restrict__ __endptr)
{ return __strtod(__nptr, __endptr); }

non inline non esiste in C? Non dovrebbe un colpo di testa "standard" essere standard ANSI? Devo solo togliere la linea o evitare di compilare con stdlib.h (non mi ricordo cosa è in stdlib adesso)?

Aggiorna

dalla lettura del legame che Adam ha postato ho scoperto che "in linea" non è una parola chiave in C89 e C89 è quello che viene applicata con l'interruttore -ansi. Ho dovuto cambiare a __inline__ che è, suppongo, una macro MinGW.

Grazie per l'aiuto.

È stato utile?

Soluzione

Sembra un problema noto in MinGW: link per archiviare MinGW mailing list

Si dice che in linea non è parte dello standard C89 (come -ansi forzare) e dovrebbe essere sostituito con __inline__ invece

Se leggete prossimi e-mail, qualcuno dice che deve risolvere questo bug direttamente nelle cvs. Scopri il nuovo codice e avere uno sguardo (?) Poi ci dicono. : -)

Altri suggerimenti

in linea non è parte di ciò che gcc 3.4.5 considera ANSI C -? È parte del C99, penso Puoi confermare la versione di gcc che si sta utilizzando

Ho eseguito in questo problema prima durante la compilazione di uno standard specifico. Su un sistema Linux ero compilazione in, le intestazioni rwlock pthread non erano conformi C99 (o non sono stati in ifndef'd). Bisogna stare attenti in questi casi, e controllando l'output del preprocessore a volte può aiutare in questi casi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top