[devel] странная проблема с gcc?
Dmitry V. Levin
ldv на altlinux.org
Вт Май 21 00:13:25 MSK 2024
On Mon, May 20, 2024 at 11:37:50PM +0300, Vladislav Zavjalov wrote:
> Всем привет!
>
> Локализовал какую-то странную проблему в C коде,
> не понимаю, это проблема с моим пониманием С или с компилятором.
>
> Код ниже: число печатается кусочками по два байта.
> Это перестает работать при компиляции с -O2 или -O3.
Это -fstrict-aliasing, который включён в -O2.
$ gcc -Wall -O2 -Wstrict-aliasing=2 a.c && ./a.out
a.c: In function 'main':
a.c:9:33: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
9 | printf("%#x\n", ((uint16_t*)&v1)[i]);
| ^~~
a.c:6:12: warning: 'v1' is used uninitialized [-Wuninitialized]
6 | uint32_t v1 = 0x12345678;
| ^~
--
ldv
Подробная информация о списке рассылки Devel