http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf 7.20.4 introduces Macro integer constants with:
1 The following function-like macros expand to integer constants suitable for initializing objects that have integer types corresponding to types defined in <stdint.h>. Each macro name corresponds to a similar type name in 7.20.1.2 or 7.20.1.5.
I don't quite understand this paragraph. The macros basically slap the appropriate suffix onto an unsuffixed number as in:
UINT64_C(0x123) => 0x123ULL
But if I wanted to initializes an uint64_t, I would just do:
uint64_t x = 0x123;
and I wouldn't bother with the suffix at all.
Why would I need these macros in initializations?