Recentemente ho avuto un bug in un contesto simile a quello successivo:segnali di avvertimento gcc per le conversioni implicite
double getSomeValue()
{
return 4.0;
}
...
std::string str;
str = getSomeValue();
Come si può vedere qui è facile da individuare il problema, ma in una grande base di codice in cui getSomeValue()
è non nello stesso file con il codice chiamante potrebbe essere difficile individuare questa conversione da double
a std::string
. GCC compila questo codice con -Wall -Wextra -Werror
(output di esempio qui, non so quali flag di avviso sono stati utilizzati: http://ideone.com/BTXBFk).
Come posso forzare GCC a emettere avvisi per queste conversioni implicite pericolose? Ho provato -Wconversion
, ma è molto severo e causa errori nella maggior parte delle intestazioni incluse per casi comuni come unsigned - 1
. C'è una versione più debole di -Wconversion
?
In realtà è 'double' →' 'char' → conversione STRING'. Il primo può essere catturato da '-Wfloat-conversion', che è anche abilitato da' -Wconversion' –
@Revolver_Ocelot Grazie, questa bandiera sembra essere quella che sto cercando. Sfortunatamente non è disponibile in GCC 4.8.2 – Felics
@ DieterLücking Ho specificato nella domanda che non posso usare -Wconversion perché ottengo molti errori per i costrutti senza segno - 1 come in molti header inclusi. – Felics