【发布时间】:2024-01-09 02:40:02
【问题描述】:
根据this answer,我尝试打印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 行与我的实际代码完全相同,但这不起作用。
我应该寻找什么来进一步调试?我的实际代码还有#includes 其他标题。这会导致问题吗?包含标题的顺序重要吗?
编辑
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"
【问题讨论】:
-
为什么在 C++ 中使用 printf?此外,我们无法调试我们看不到的代码...常见错误包括缺少;或)。
-
您能检查一下
PRIu64的确切定义吗? -
我知道
cout。 :) 它在我的系统上比printf慢,所以我更喜欢仅在printf不够好的情况下使用它。我知道你不能调试你看不到的代码。我希望对可能出现的问题有一些想法,以便我可以尝试进一步调试。 -
@Deidara-senpai:添加给您错误的行,因为您的最小示例已编译。
-
@Ajay 已编辑问题。这给了我一些关于如何进一步调试的想法。谢谢。