В Птн, 07/08/2009 в 15:59 +0300, Serge Ryabchun пишет: > Это не повод собирать не верный код: > > [sr@sr 6]$ gcc-4.3 -Wall -O2 f2.c > f2.c: In function 'main': > f2.c:10: warning: dereferencing type-punned pointer will break > strict-aliasing rules > [sr@sr 6]$ ./a.out > TEST 00: 0.000000 > [sr@sr 6]$ > [sr@sr 6]$ gcc-4.4 -Wall -O2 f2.c > f2.c: In function 'main': > f2.c:10: warning: dereferencing type-punned pointer will break > strict-aliasing rules > [sr@sr 6]$ ./a.out > TEST 00: 3.140000 По-моему, это вопрос из разряда разрешённости к использованию конструкции reinterpret_cast<> в С++. Некоторые пользуются. На некоторых архитектурах и в некоторых условиях результат даже работает. В данном случае не повезло. Это C, в нём можно почти всё, в том числе и непринуждённым движением прострелить себе ногу. > 2009/8/7 Alexey Rusakov : > > В Птн, 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 > > > > _______________________________________________ > > Sisyphus mailing list > > Sisyphus@lists.altlinux.org > > https://lists.altlinux.org/mailman/listinfo/sisyphus -- Alexey "Ktirf" Rusakov GNOME Project ALT Linux Team