-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?
Réponses
Trop de publicités?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.
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.
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).