В Птн, 07/08/2009 в 12:02 +0300, Roman Savochenko пишет: > Kirill A. Shutemov wrote: > > 2009/8/7 Roman Savochenko : > > > >> Kirill A. Shutemov wrote: > >> > >>>>> И во всех трёх вариантах нарушили strict aliasing. Используйте union. > >>>>> > >>>> ним работает, но это не решение, поскольку приведенные мною обороты > >>>> распространены и я не уверен что подобных проблем нет в других частях > >>>> моей, > >>>> в общем-то не маленькой, программы. > >>>> > >>>> > >>> Есть повод исправить код. > >>> > >>> > >> Я не считаю его ошибочным. > >> > > Strict aliasing rule -- часть стандарта C99. Если вы хотите писать > > быстрый переносимый > > код, то вам стоит следовать этому правилу. > > > Ничего про стандартность тут > http://en.wikipedia.org/wiki/Aliasing_(computing) не увидил. А про то > что существуют конфликты с оптимизаторами там есть. Смотрите внимательнее: "...the ISO standard for the C programming language (including its newer C99 edition) specifies that it is illegal (with some exceptions) for pointers of different types to reference the same memory location." -- Alexey "Ktirf" Rusakov GNOME Project ALT Linux Team