GCC options pour appliquer la norme Ansi C norme de contrôle?
Ce que gcc options dois-je utiliser pour appliquer la norme ANSI C (C99) avertissements/erreurs?
gcc (GCC) 3.4.2 (mingw-spécial)
Je suis en utilisant:
gcc-pedantic -ansi -std=c99
est-ce correct?
ANSI publié l'original C standard en 1989. L'ISO a publié sa version de la norme en 1990, et ANSI officiellement adopté cette version. L'ISO a publié des nouvelles éditions de la norme en 1999 et 2011, et de l'ANSI a adopté chacun d'entre eux, de faire le éditions précédentes officiellement obsolète. Confusion, le terme "ANSI C" est encore souvent (et à tort) utilisé pour se référer à la langue définie par le 1989/1990 éditions, et
gcc -ansi
fait toujours référence à cette version. Je suggère que le terme "ANSI C" est ambiguë et doit être évitée. Reportez-vous à C89/C90, C99, ou C11 à la place.OriginalL'auteur AlfaTeK | 2009-11-30
Vous devez vous connecter pour publier un commentaire.
La
-ansi
drapeau est synonyme avec le-std=c89
drapeau.Juste en utilisant
-std=c99
avec-pedantic
devrait être suffisant.En cas de doute, vous pouvez toujours reportez-vous à la documentation de GCC. Comme de GCC 3.4.2, le chapitre à lire est 2 - les Normes Linguistiques pris en charge par GCC.
OriginalL'auteur James McNellis
C'est une vieille question, mais je voulais juste ajouter quelques points supplémentaires.
Tout d'abord, indépendamment de l'ensemble des génériques commutateurs de ligne de commande que vous fournissez à GCC, actuellement, il ne semble pas être possible de faire de GCC pour signaler tous les les violations de contrainte des "erreurs" et tout le reste comme des "avertissements". Certains des messages de diagnostic GCC rapports comme "mises en garde" sont en fait des les violations de contrainte (c'est à dire les "erreurs") du point de vue du langage C, mais il n'y a aucun moyen de forcer l'GCC de reconnaître ce fait et de générer une "erreur" de diagnostic. Très probablement qu'une séparation précise peut être obtenue en ajustant certains types d'avertissement, mais je ne suis pas sûr de GCC paramètres de fournir suffisamment de granularité pour réaliser un bon match.
Deuxièmement, la GCC fournit
-pedantic-errors
option qui peut être utilisé à la place de la plaine-pedantic
, qui vise à permettre à un plus précis (comme décrit ci-dessus) de la classification de messages de diagnostic dans des "erreurs" et "mises en garde". Il n'est pas encore parfait, mais.P. S. La spécification du langage ne nécessite pas de définir la séparation des messages de diagnostic dans des "erreurs" et "mises en garde", mais dans la pratique, de nombreux programmeurs s'attendre à des violations de contrainte à être signalée comme "erreurs". J'ai pensé que vous pourriez dire quelque chose comme ça, quand vous avez parlé de "faire respecter les avertissements/erreurs" dans votre question.
-Werror
). Ensuite, il n'a pas d'importance si certaines erreurs sont mal rapportées comme des avertissements.OriginalL'auteur AnT
ANSI C n'est pas le même que le C99 (encore). Aussi,
-Wall
pourrait également être d'intérêt, mais seulement-pedantic
devrait faire ce que vous voulez.OriginalL'auteur Mikael S