Maison > développement back-end > C++ > Quels sont les paramètres d'avertissement optimaux du compilateur pour C/C afin d'améliorer la qualité du code et de détecter les problèmes potentiels ?

Quels sont les paramètres d'avertissement optimaux du compilateur pour C/C afin d'améliorer la qualité du code et de détecter les problèmes potentiels ?

Susan Sarandon
Libérer: 2024-11-04 02:06:02
original
318 Les gens l'ont consulté

What are the optimal compiler warning settings for C/C   to enhance code quality and detect potential issues?

Paramètres d'avertissement optimaux du compilateur pour C/C

La sélection du niveau d'avertissement du compilateur approprié améliore la qualité du code en identifiant les problèmes potentiels. Voici les niveaux recommandés pour différents compilateurs :

gcc et g :

  • '-Wall' active de nombreux avertissements, y compris ceux relatifs aux règles de préséance logique et à la vérification de type. .
  • '-Werror' élève les avertissements au rang d'erreurs, bien que cela puisse nécessiter la désactivation des macros '#warning' utilisées pour la prise de notes.

Sun CC :

  • '-xarch=v9' permet un niveau d'avertissement plus strict, répondant aux problèmes de portabilité et d'efficacité.

aCC (HPUX) :

  • '-A' active des vérifications supplémentaires en cas de débordement de tampon, de déréférencement de pointeur nul et de comportement non défini.

Visual Studio :

  • 'Niveau 4' ('/W4') fournit des avertissements complets, notamment des informations sur les variables non initialisées et le code inutilisé.

Intel :

  • '-Wall' évoque des avertissements similaires à '-Wall' de gcc, ainsi que des contrôles supplémentaires pour la sécurité et la portabilité de la mémoire.

Drapeaux C extra-paranoïaques :

Pour le code hautement critique, un ensemble complet d'indicateurs d'avertissement peut être utilisé :

-g -O -Wall -Weffc++ -pedantic  \
-pedantic-errors -Wextra -Waggregate-return -Wcast-align \
-Wcast-qual  -Wchar-subscripts  -Wcomment -Wconversion \
-Wdisabled-optimization \
-Werror -Wfloat-equal  -Wformat  -Wformat=2 \
-Wformat-nonliteral -Wformat-security  \
-Wformat-y2k \
-Wimplicit  -Wimport  -Winit-self  -Winline \
-Winvalid-pch   \
-Wunsafe-loop-optimizations  -Wlong-long -Wmissing-braces \
-Wmissing-field-initializers -Wmissing-format-attribute   \
-Wmissing-include-dirs -Wmissing-noreturn \
-Wpacked  -Wpadded -Wparentheses  -Wpointer-arith \
-Wredundant-decls -Wreturn-type \
-Wsequence-point  -Wshadow -Wsign-compare  -Wstack-protector \
-Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch  -Wswitch-default \
-Wswitch-enum -Wtrigraphs  -Wuninitialized \
-Wunknown-pragmas  -Wunreachable-code -Wunused \
-Wunused-function  -Wunused-label  -Wunused-parameter \
-Wunused-value  -Wunused-variable  -Wvariadic-macros \
-Wvolatile-register-var  -Wwrite-strings
Copier après la connexion

Adaptez ces paramètres aux exigences du projet et à la compatibilité des bibliothèques tierces.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal