У меня есть большая программа, которая имеет большое количество фрагментов формыкомпилятор предупреждения о типе каламбуров в НКУ
float t = amplitudes->read(current_element);
if (*((uint32_t *) &t) == 0xsomereservedvalue)
do_something
else
do_something_else
Это нормально компилируется с GCC 3.4.x нет предупреждений. Скомпилировано с -Wtrict-aliasing = 2 все еще никаких предупреждений. Недавно я попробовал компиляцию с gcc4.4 и получил огромное количество предупреждений о пустых ссылках типа. Может ли кто-нибудь сказать мне, есть ли разумная ситуация, при которой такой код может потерпеть неудачу? Насколько я вижу, тип punning - это только потенциальная проблема, если оптимизация упорядочивает такие вещи, что что-то может быть записано из реестра после того, как другая строка кода читает его, что, поскольку мы возвращаемся к функции здесь, просто может Слушай. Я что-то упустил здесь, или gcc, будучи немного braindead?
Какое точное предупреждение? – doron
предупреждение: разыменованный тип-указатель нарушит правила строгого сглаживания – camelccc