Comment désactiver les avertissements de particulier inclure des fichiers?
Je wold à désactiver, notamment des avertissements pour tous les fichiers qui sont inclus, directement ou indirectement, en particulier inclure des fichiers. Par exemple, je veux désactiver l'avertissement "de l'affectation d'une chaîne de caractères littérale d'un char*", pour tous les fichiers ou les fichiers inclus par les fichiers inclus par un #include <bar/*>
(l'étoile dans mon cas signifie "n'importe quoi peut être ici").
La raison en est, certaines des personnes que j'ai au programme avec juste ne pouvez pas utiliser "const", donc à la fin je reçois beaucoup de mises en garde sur la chaîne littérale de l'abus. Je voudrais d'ignorer ces milliers d'avertissements à venir à partir de leur code, donc je peux me concentrer sur les erreurs dans mon propre code et de les corriger.
- Je utiliser Intel C++ et GCC. Certains de mes copains utiliser clang, alors je serais heureux d'entendre des solutions pour que trop.
- stackoverflow.com/questions/1079997/... et stackoverflow.com/questions/965093/... et tout à fait un peu plus.
- Suis-je obtenir ce droit - si le fichier en question est inclus par
<bar/the_file.h>
, les avertissements doivent être supprimées, et avec<the_file.h>
pas? - merci pour les liens connexes. Juste pour le rendre clair pour les autres qui peuvent avoir certains indésirables associations: Les deux liens ci-dessus ne sont pas dupe des liens!
- pas que en particulier. Je peux vivre avec toutes les mises en garde d'être handicapé pour ce fichier. Il n'a pas à en avoir un en particulier inclure modèle. Je soupçonne que la façon dont j'ai formulé ma question est un peu regrettable.
- Quel compilateur que vous utilisez? (Méthodes de suppression des avertissements diffèrent souvent par le compilateur.)
- Toujours été au fond de la question: "j'utilise Intel C++ et GCC.".
- Juste leur apprendre à écrire
const
-le code est correct. - c'est une bonne idée. mais il ne va pas aider avec le code existant.
- Venez-vous de répondre à mon commentaire de quatre ans tardive?? :-o, de toute façon, toujours corriger
const
-code incorrect. Il en vaut la peine. - Son été un certain temps, vous devriez vraiment marquer l'un de ces réponses correctes ...
- aucun d'entre eux de répondre à la question satisfactionally, j'ai peur
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez GCC, vous pouvez utiliser le
-isystem
drapeau à la place de la-I
drapeau désactiver les avertissements à partir de cet emplacement.Donc si vous êtes actuellement en utilisant
utilisation
à la place. Malheureusement, ce n'est pas particulièrement un contrôle précis. Je ne suis pas au courant de manière plus ciblée mécanisme.
Une meilleure GCC solution: utilisez le #pragma.
par exemple:
Lorsque j'utilise
g++
et j'ai tiers-têtes de générer des tonnes de mises en garde avec mon habituel défaut de-Wall -Wextra
& co. J'ai tendance à les regrouper en séparer comprend, en précisant lesystem_header
#pragma
.Je préfère cette solution à l'
-isystem
parce qu'il est plus fine et je peux le mettre directement dans les sources, sans jouer trop avec des arguments de ligne de commande et inclure des répertoires.Exemple avec le hideux de la racine de la bibliothèque:
Je suppose que la solution la plus simple serait d'écrire un script simple qui va appeler le compilateur, compiler, et la bande indésirables de sortie, basé sur le nom de fichier et le type d'avertissement. Vous pouvez utiliser des scripts différents pour chaque compilateur.
De simplement mettre à jour votre fichier makefile pour utiliser ce script au lieu d'appeler le compilateur directement.