Существует ли такой флаг для gcc, чтобы при преобразовании длинного в короткое генерировалось предупреждение о возможной потере данных?
Я работаю над приложением C ++, скомпилированным для Visual Studio (2005) и GCC 4.2 (для Mac OS X).
Предупреждения, которые выводит Visual Studio, следуют этому шаблону:
: warning C4244: 'argument' : conversion from 'long' to 'short', possible loss of data
Я пробовал -Wconversion, но это не совсем то, что я ищу. Единственное, что мне удалось найти, - это экспериментальный флаг -Wcoercion, связанный с GCC 4.3 (который я не уверен, если мы еще хотим инвестировать).
22 апреля 2009 г. @ 11:00 EST Редактировать: Чтобы прояснить, я хочу увидеть это предупреждение. У нас есть код, по которому мы хотим знать, когда произойдет потеря данных. Если у меня есть код:
unsigned long value1 = LONG_MAX;
std::cout << "value1: " << value1 << std::endl;
unsigned short value2 = value1;
std::cout << "value2: " << value2 << std::endl;
Я получаю этот ожидаемый результат:
значение1: 2147483647
значение2: 65535
В нашем коде у нас есть специальные утверждения, которые выполняют приведение и предупреждают нас, если выполненный код приведет к потере данных. Мы нашли места в нашей большой кодовой базе, используя предупреждения Visual Studio.
Можно ли как-нибудь сгенерировать эти предупреждения в gcc 4.2?