metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-04-28 01:58 pm

libev, забавное

В бабуинанедолбеанедебиане gcc -O2 при компиляции примера работы с libev кидает кучу warnings типа "testev.c:58: warning: dereferencing type-punned pointer will break strict-aliasing rules"

Автор на вопросы на эту тему псит, как команда из 100500 айседов и авторов firebird вместе взятых, в стиле "вы тупые, используйте компилятор C для компиляции C, идите нахрен, это всего лишь warning".

http://comments.gmane.org/gmane.comp.lib.ev/907
http://lists.schmorp.de/pipermail/libev/2010q1/000912.html

собственно патчик: http://lists.schmorp.de/pipermail/libev/attachments/20100218/3c4aaf8c/attachment.txt

[identity profile] blackyblack.livejournal.com 2012-04-28 01:33 pm (UTC)(link)
Автор читает лекции про си, но так и не объясняет, нахрена писать такой код. Наверное это мега оптимизация...

[identity profile] metaclass.livejournal.com 2012-04-28 01:42 pm (UTC)(link)
Автор, по-моему, все таки не прав, а вот gcc прав. Структуры формально разные.

[identity profile] blackyblack.livejournal.com 2012-04-28 01:45 pm (UTC)(link)
Дак я верю, что gcc прав. Нахрена делать то так? Для таких вещей memcpy есть.

[identity profile] metaclass.livejournal.com 2012-04-28 02:20 pm (UTC)(link)
для таких вещей есть более гуманный вариант: положить общую часть структуры в виде собственно поля в начале всех "унаследованных" структур, что не вызывает warning.