https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89716
Bug ID: 89716 Summary: Bogus warning -Wformat= in printf with __uint64_t argument Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: optivec at gmx dot de Target Milestone: --- With the latest pre-built GCC, coming with Ubuntu, "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609" I get a bogus "warning: format '%llu' expects argument of type 'long long unsigned int', but argument 2 has type '__uint64_t' {aka long unsigned int}' [-Wformat=]" printf( "x = %llu", x ); for the following short function: #include <stdlib.h> #include <stdio.h> void testprint( void ) { __uint64_t x=0x0123456789abcdefLL; printf( "x = %llu", x ); } The warning is nonsense in itself, as __uint64_t clearly is NOT "aka long unsigned int". The compiled code is correct. So this appears to be a bug in the preprocessor.