Я недавно была ошибка в подобном контексте к следующему:НКУ предупреждающие флаги для неявных преобразований
double getSomeValue()
{
return 4.0;
}
...
std::string str;
str = getSomeValue();
Как вы можете видеть здесь легко обнаружить проблему, но в большой базе кода, где getSomeValue()
является не в том же файле с вызывающим кодом, может быть трудно обнаружить это бесшумное преобразование double
до std::string
. GCC компилирует этот код в порядке с -Wall -Wextra -Werror
(здесь выводится образец, я не знаю, какие флаги были использованы: http://ideone.com/BTXBFk).
Как я могу заставить GCC выдавать предупреждения для этих опасных неявных преобразований? Я пробовал -Wconversion
, но он очень строгий, и он вызывает ошибки в большинстве включенных заголовков для обычных случаев, таких как unsigned - 1
. Есть ли более слабая версия -Wconversion
?
Это фактически 'double' →' char' → 'string' conversion. Первый можно поймать '-Wfloat-conversion', который также включен' -Wconversion' –
@Revolver_Ocelot. Спасибо, этот флаг, похоже, тот, который я ищу. К сожалению, он недоступен в GCC 4.8.2 – Felics
@ DieterLücking Я указал в вопросе, что я не могу использовать -Wconversion, потому что я получаю много ошибок для неподписанных - 1 подобных конструкций во многих включенных заголовках. – Felics