Re[3]: dereferencing pointer ... does break strict-aliasing
От: Serg27  
Дата: 14.07.10 05:33
Оценка:
Здравствуйте, Klirik, Вы писали:

K>Если обратили внимание на сам пример — там достаточно недвусмысленное название функции .

Ну мало ли, может Вы не знаете что такое выравнивание Прошу прощения за ликбез.

S>>Если Вы уверены, что у Вас этого нет (например работаете только на x86 процессорах), то просто запретите это предупреждение .


K>Эта версия используется только на тех архитектурах, где выравнивание неважно. На тех, где возможно исключение, используется другой код.

K>Тем не менее — "просто запретить" — тоже далеко не всегда вариант. Например, если вы делаете пакет для gentoo с усиленной политикой, где при наличии подобного варнинга он просто не будет установлен в систему, либо будет считаться ненадёжным.

По моему проблем нет:
K>Эта версия используется только на тех архитектурах, где выравнивание неважно. На тех, где возможно исключение, используется другой код.
используйте везде этот "другой код".

Если этот код используется только на "архитектурах, где выравнивание неважно", то значит стоят всякие #ifdef. Ну и добавьте туда еще
#pragma warning( push)
#pragma warning( disable : ???)
// код функции
#pragma warning( pop )

Пример для VC++, gcc давно не использовал.

K>Мне хочется найти не обходное, а действительное решение этой проблемы.


Вы бы объяснили что именно хотите. Так как на уровне этой функции это предупреждение компилятора совершенно по делу. Т.е. решение нужно искать на уровень выше. Или все же плюнуть на предупреждение, но добавив защиту (assert, static_assert, #ifdef и т.п.)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.