Question

Quelles options gcc dois-je utiliser pour appliquer les avertissements / erreurs ANSI C (C99)? gcc (GCC) 3.4.2 (mingw-special)

J'utilise: gcc -pedantic -ansi -std = c99 est-ce correct?

Était-ce utile?

La solution

L'indicateur -ansi est synonyme de l'indicateur -std = c89 .

L'utilisation de -std = c99 avec -pedantic devrait suffire.

En cas de doute, vous pouvez toujours faire référence à la documentation GCC . Depuis GCC 3.4.2, le chapitre à lire est le 2 - Normes linguistiques prises en charge par GCC .

Autres conseils

Ceci est une vieille question mais je voulais juste ajouter quelques points supplémentaires.

Premièrement, quel que soit le jeu de commutateurs de ligne de commande génériques que vous fournissez à GCC, il semble actuellement impossible de demander à GCC de signaler toutes les violations de contrainte comme étant des "erreurs". et tout le reste en tant que "avertissements". Certains des messages de diagnostic rapportés par GCC sont des "avertissements". sont en fait des violations de contrainte (c'est-à-dire "erreurs") du point de vue du langage C, mais il n'y a aucun moyen de forcer GCC à reconnaître ce fait et à générer une "erreur". diagnostique. Il est tout à fait possible qu'une séparation plus précise puisse être obtenue en ajustant avec précision les types d'avertissement, mais je ne suis pas sûr que les paramètres GCC fournissent une granularité suffisante pour obtenir une bonne correspondance.

Deuxièmement, GCC fournit l'option -pedantic-errors qui peut être utilisée à la place de -pedantic , qui est destiné à permettre une analyse plus précise (comme décrit ci-dessus). classification des messages de diagnostic en " erreurs " et "avertissements". Ce n’est toujours pas parfait.

P.S. La spécification de langue ne nécessite pas / définit la séparation des messages de diagnostic en "erreurs". et "warnings", mais dans la pratique, de nombreux programmeurs s'attendent à ce que les violations de contrainte soient signalées comme des "erreurs". Je pensais que vous vouliez peut-être dire quelque chose comme cela lorsque vous avez mentionné "appliquer des avertissements / des erreurs". dans votre question.

-ansi
    In C mode, this is equivalent to -std=c89. In C++ mode, it is equivalent to -std=c++98.

ANSI C n’est pas identique à C99 (pour le moment). De même, -Wall pourrait également présenter un intérêt, mais seul -pedantic devrait faire ce que vous voulez.

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