[webkit-dev] Reminder regarding formatting uint64_t
Michael Catanzaro
mcatanzaro at igalia.com
Wed Feb 27 14:35:39 PST 2019
Hi,
For the past several years, I've been regularly fixing -Wformat
warnings that look like this:
../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:3148:46: warning:
format ‘%llu’ expects argument of type ‘long long unsigned
int’, but argument 6 has type ‘uint64_t’ {aka ‘long unsigned
int’} [-Wformat=]
RELEASE_LOG_ERROR(ProcessSuspension, "%p - WebPage
(PageID=%llu) - LayerTreeFreezeReason::ProcessSuspended was set when
removing LayerTreeFreezeReason::PageTransition; current reasons are %d",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
this, m_pageID, m_LayerTreeFreezeReasons.toRaw());
~~~~~~~~
Problem is that uint64_t is long long unsigned int on Mac, but only
long unsigned int on Linux. It can't be printed with %llu, so please
use PRIu64 instead. E.g.:
LOG("%llu", pageID); // wrong
LOG("%" PRIu64, pageID); // correct
This is good to keep in mind for any sized integer types, but uint64_t
in particular since this is what causes problems for us in practice.
Thanks,
Michael
More information about the webkit-dev
mailing list