Maison  >  Article  >  développement back-end  >  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
Susan Sarandonoriginal
2024-11-04 02:06:02190parcourir

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

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:
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