153 votes

Quel est le but de l'aide -pédant dans GCC/G++ compilateur?

-ansi: indique au compilateur de mettre en œuvre la norme ANSI option de langue. Ceci permet d' hors certaines "caractéristiques" de GCC qui sont incompatibles avec la norme ANSI standard.

-pedantic: utilisé en conjonction avec d' -ansi, cela indique au compilateur d'être strictement conformes à la norme ANSI, rejetant le code qui n'est pas conformes à la norme.

Le texte ci-dessus est extrait de cette note. La première chose d'abord, quel est le but de l'utilisation de -pedantic et -ansi option avec GCC/G++ compilateur, je ne pouvais pas comprendre la description ci-dessus. Quelqu'un peut me dire les circonstances de l'utilisation de ces deux options? Quand devrais-je utiliser? Est-il important?

115voto

Jonathan Leffler Points 299946

Je l'utilise tout le temps dans mon codage.

L' -ansi drapeau est équivalent à -std=c89. Comme mentionné, il s'éteint quelques extensions de GCC. L'ajout d' -pedantic désactive les extensions et génère plus de mises en garde. Par exemple, si vous avez un littéral de chaîne de plus de 509 caractères, alors -pedantic avertit que parce qu'il dépasse la limite minimum requis par la norme C89. C'est, chaque C89 compilateur doit accepter des chaînes de longueur 509; ils sont autorisés à accepter plus longtemps, mais si vous êtes pédant, il n'est pas portable pour utiliser des chaînes plus longues, même si un compilateur est autorisée à accepter des chaînes plus longues et, sans le pédant avertissements, GCC va les accepter.

99voto

Wazery Points 2082

De compilateurs GCC toujours essayer de compiler votre programme si cela est possible. Toutefois, dans certains cas, le C et le C++ normes de préciser que certaines extensions sont interdites. Conforme compilateurs comme gcc ou g++ doit émettre un diagnostic lorsque ces extensions sont rencontrés. Par exemple, le compilateur gcc est -pédant option causes de gcc pour émettre des avertissements dans de tels cas. À l'aide de la plus stricte -pedantic-errors option convertit un tel diagnostic mises en garde sur les erreurs qui sera la cause de la compilation l'échec à un tel point. Seuls ceux non-ISO constructions qui sont nécessaires pour être signalé par un conforme le compilateur va générer des avertissements ou des erreurs.

15voto

Francisco Soto Points 5043

Fondamentalement, il fera de votre code beaucoup plus facile à compiler sous d'autres compilateurs qui a également de mettre en œuvre la norme ANSI, et, si vous êtes prudent dans lequel les bibliothèques/les appels d'api que vous utilisez, sous d'autres systèmes d'exploitation/plates-formes.

Le premier, désactive les fonctionnalités SPÉCIFIQUES de la GCC. (ansi) Le second, va se plaindre de QUOI que ce soit qui n'est pas conforme à la norme (pas seulement des caractéristiques spécifiques de la GCC, mais vos constructions). (-pédant).

8voto

Paul R Points 104036

Si votre code doit être portable , alors vous pouvez tester qu'il se compile sans gcc extensions ou d'autres caractéristiques non standard. Si votre code compile avec -pedantic -ansi alors qu'en théorie il devrait compiler OK avec toute autre norme ANSI compilateur.

3voto

Damien_The_Unbeliever Points 102139

Si vous êtes à l'écriture de code que vous envisagez va être compilé sur une grande variété de plates-formes, avec un certain nombre de différents compilateurs, puis à l'aide de ces indicateurs vous aideront à vous assurer de ne pas produire du code qui ne compile avec GCC.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X