$ cat test.c
#include <stdint.h>
uint64_t a = 0x0000000000000000;
uint64_t b = 0x8000000000000000;
$ gcc test.c -c -pedantic -Wall -Wextra -Wlong-long -Wunused -std=c99 -m32
test.c:4:1: warning: integer constant is too large for ‘long’ type [-Wlong-long]
uint64_t b = 0x8000000000000000;
^
Как это победить? Суффиксы ULL и кастирование к uint64_t не подавляет варнинг.
Использую gcc (Debian 5.4.0-6) 5.4.0 20160609 и gcc (Debian 6.1.1-9) 6.1.1 20160705