У нас была ошибка в нашем коде, исходящая из строки
unsigned int i = -1;
Когда код был изначально написан, было i = 0
и, следовательно, правильно.
Используя -Wall -Wextra
, я был немного удивлен тем, что gcc не предупредил меня здесь, потому что -1 не вписывается в unsigned int.
Только при включении -Wsign-conversion
эта строка становится предупреждением, но с ней много ложных срабатываний. Я использую стороннюю библиотеку, которая выполняет операции с массивом с подписанными int (хотя они не могут быть < 0), поэтому всякий раз, когда я смешиваю это, например. вектор, я получаю предупреждения - и я не вижу смысла добавлять миллионы призов (и даже сторонние заголовки производят много предупреждений). Поэтому для меня слишком много предупреждений. Все эти предупреждения состоят в том, что преобразование "может изменить знак". Это прекрасно, потому что я знаю, что это происходит не во всех случаях.
Но с назначением, упомянутым выше, я получаю то же предупреждение "может измениться". Разве это не должно быть "обязательно изменит знак!" вместо "может измениться"? Есть ли способ выбросить предупреждения только для этих случаев "изменится", а не для возможных случаев?