Question

Je lisais sur les drapeaux utilisés dans gcc, et lu recommendons d'utiliser gcc -ansi -pedantic -Wall file1 [file2 [file3...]] -o output. Pour la qualité de l'amour de mon code, pour le standard, et d'obtenir toutes les mises en garde à ce sujet.

Eh bien, sur la compilation avec -ansi ... Si je <stdlib.h> inclus, gcc me donne cette erreur:

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"

Cette ligne est la suivante:

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

ne inline existe pas en C? Ne doit pas un en-tête « standard » être standard ansi? Dois-je simplement supprimer la ligne ou éviter la compilation avec stdlib.h (je ne me souviens pas vraiment ce qui est en stdlib en ce moment)?

Mise à jour

à la lecture du lien qui Adam affiché j'ai découvert que « en ligne » est pas un mot-clé dans C89 et C89 est ce qui est appliquée avec le commutateur -ansi. Je devais changer pour __inline__ qui est, je suppose, une macro MinGW.

Merci pour l'aide.

Était-ce utile?

La solution

Il semble un problème connu dans MinGW: pour archiver MinGW liste de diffusion

Il dit que en ligne ne fait pas partie de la norme C89 (comme -ansi forcer) et il doit être remplacé par __inline__ à la place

Si vous lisez des e-mails à venir, quelqu'un dit qu'il a corriger ce bug directement dans les cvs. Consultez le nouveau code et un coup d'oeil (?) Puis nous dire. : -)

Autres conseils

en ligne ne fait pas partie de ce que gcc 3.4.5 considère comme ANSI C - elle fait partie de C99, je pense que vous pouvez confirmer la version de gcc que vous utilisez

Je l'ai rencontré ce problème avant lors de la compilation à une norme spécifique. Sur un système Linux, je compilait à, les en-têtes de pthread rwlock ne sont pas conformes C99 (ou ne sont pas ifndef'd in). Vous devez être prudent dans ces cas, et de vérifier la sortie du préprocesseur peut parfois aider dans ces cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top