根据这个答案,我尝试打印 a uint64_t
,但它给了我一个错误:
错误:在 'PRIu64' 之前需要 ``)'
以下是显示我正在尝试做的最小代码:
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
#include <cstdio>
class X {
X() {
uint64_t foo = 0;
printf("%07" PRIu64 ": ", foo);
}
};
int main() {}
这个最小的代码可以编译,但我的实际代码没有。但是,我已经尝试X::X()
在我的实际代码中使用完全相同的 2 行,但这不起作用。
我应该寻找什么来进一步调试?我的实际代码也是#include
其他标题。这会导致问题吗?包含标题的顺序是否重要?
编辑
PRIu64
在我的机器上定义如下:
# if __WORDSIZE == 64
# define __PRI64_PREFIX "l"
# define __PRIPTR_PREFIX "l"
# else
# define __PRI64_PREFIX "ll"
# define __PRIPTR_PREFIX
# endif
# define PRIu64 __PRI64_PREFIX "u"