Vogliamo iniziare a utilizzare -Wall -Werror
su un progetto di grandi dimensioni.
A causa delle dimensioni, questo cambiamento deve essere graduale e vogliamo iniziare con gli avvertimenti più importanti.Disattiva avviso/errore per gli avvisi predefiniti
Il modo migliore per farlo sembra utilizzare -Wall -Werror
, con eccezioni per avvisi specifici. Gli avvertimenti eccezionali sono quelli che abbiamo molto (quindi sistemarli tutti è difficile e rischioso) e non li consideriamo molto pericolosi.
Non sto dicendo che non vogliamo correggere tutti questi avvertimenti - solo non nella prima fase.
Conosco due modi per escludere un avvertimento da -Werror
- il migliore è -Wno-error=xxx
, e se non funziona - -Wno-xxx
(naturalmente, preferiamo vedere l'avvertimento e ignorarlo, invece di nasconderlo).
Il mio problema è con gli avvisi che sono abilitati di default e non hanno un flag -Wxxx
ad essi correlato. Non sono riuscito a trovare alcun modo per allentare quando si utilizza -Werror
.
Sono specificamente preoccupato per due avvertimenti specifici. Ecco un programma che li e l'output del compilatore presenta:
#include <stdio.h>
void f(int *p) { printf("%p\n", p); }
int main(int argc, char *argv[]) {
const int *p = NULL;
const unsigned int *q = NULL;
f(p); /* Line 7: p is const, f expects non const */
if (p == q) { /* Line 8: p is signed, q is unsigned */
printf("Both NULL\n");
}
return 0;
}
% gcc warn.c
warn.c: In function 'main':
warn.c:7: warning: passing argument 1 of 'f' discards qualifiers from pointer target type
warn.c:8: warning: comparison of distinct pointer types lacks a cast
so la soluzione migliore è quella di risolvere questi avvertimenti, ma è molto più facile a dirsi che a farsi. Affinché questo cambiamento abbia successo, dobbiamo farlo in modo graduale e non possiamo fare troppe modifiche contemporaneamente.
Qualche suggerimento? Grazie.
Che ne dici di fare il contrario, cioè abilitare '-Wall' globalmente e' -Werror' solo sulle parti del codice che hai "ripulito"? – Mat
related: http://stackoverflow.com/questions/12163969/how-to-eliminate-the-discard-qualifier-warning –
@ H2CO3 Ha detto che lo aggiusterà, ma in un grande progetto posso vedere non voler affrontare prima questo. Non c'è bisogno di trattarlo come un bambino e tenere qualcosa da lui. –