J'apprends le C ++ et j'utilise g ++ sur Linux pour m'entraîner.
Je veux savoir si les gens qui travaillent en tant que programmeurs utilisent le drapeau g ++ -pedantic et aussi son importance dans le monde réel.
Qu'en est-il des autres compilateurs, permettent-ils également cela? Est-ce devenu une norme de facto?
Je suis intéressé parce que je lis C ++ Primer où l'auteur souligne qu'il est illégal d'utiliser une expression non-const comme dimension dans la définition du tableau et g ++ le permet par défaut. Et il y a peut-être d'autres choses que je ne connais pas.
Réponses:
Oui, faites absolument ça. En fait, vous devez étudier la page de manuel et activer plus d'avertissements que
-pedantic
et-Wall
ne le feront.Non, il n'y a pas de norme. MSVC utilise
/W4
par exemple.la source
-Wall -Wextra -Werror -pedantic -std=c++0x
:)-pedantic
avec C ++ car le manuel de GCC implique qu'il n'est destiné qu'à C, et je suis passé à l'utilisation-std=c++14
dans de nouveaux projets.-Wall -Wextra -Werror -std=c++14
:)-Werror
transforme tous les avertissements en erreurs. Mais-pedantic-errors
ne fait que des erreurs sur lesStandard ICO C++
violations.Bien que je n'aie pas programmé C ++ depuis un certain temps, je vous conseille d'utiliser ce drapeau. Il vous aide à créer du code conforme aux normes et vous facilitera la vie à tous. AFAIK, la plupart des autres compilateurs ne prennent pas en charge les extensions gcc / g ++.
Je déteste par exemple, quand je ne peux pas compiler de code simplement parce que le développeur d'origine a décidé de coder contre des extensions de compilateur non standard.
Je parie qu'une énorme quantité (disons 20%) de programmes Linux qui ont été écrits en C / C ++ ne seront pas compilables avec autre chose que gcc / g ++, ce qui me rend un peu triste. Adhérez toujours aux normes.
la source
Personnellement j'utilise:
-Mur -Wextra -Wshadow -Weffc ++ -Wstrict-aliasing -ansi -pedantic -Werror
Active ainsi une multitude d'avertissements, mais plus important encore, traite tous les avertissements comme des erreurs (car la plupart des avertissements sont des erreurs logiques dans votre réflexion).
la source
-Wunreachable-code -Wno-long-long
-g -pg -fprofile-arcs -ftest-coverage
-g -O0
-O3
Il est tout à fait essentiel d'utiliser le
-pedantic
drapeau.J'ajouterais seulement qu'avec la norme actuelle, il est conseillé d'utiliser quelque chose de similaire à:
Où:
-std=c++17
lui dit d'adhérer à la révision de la norme C ++, publiée en 2017, vous pouvez en savoir plus ici .-Wall
lui dit:-Wextra
lui indique d'activer quelques avertissements supplémentaires, mais pas tous.-Werror
lui dit de faire de tous les avertissements des erreurs.-Wpedantic
ou lui-pedantic
dit simplement :-pedantic-errors
lui indique de donner une erreur chaque fois que la norme de base (voir -Wpedantic) nécessite un diagnostic.Cet ensemble est généralement utile non seulement pour les débutants, car ils apprendront progressivement que chaque avertissement a le potentiel de provoquer une erreur, mais aussi pour une utilisation normale.
Toutes les options d'avertissement sont décrites en détail ici sur la page GNU / GCC .
la source