【发布时间】:2012-05-26 05:31:45
【问题描述】:
我正在尝试消除程序中的虚假警告。 windows 64下(linux下没有这个警告)这个说法:
printf("%llu",UINT64_MAX);
生成以下警告:
warning: unknown conversion type character 'l' in format [-Wformat]|
输出似乎是正确的,警告不应该在那里。我能找到的最相关的 gcc 相关帖子是这个 2008 年的错误报告 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37768
如果我理解正确的话,这个警告是因为 gcc 调用了不符合 C99 的 MSVC printf 并且无法理解 printf 中的 unsigned long long 格式。在同一页面上,建议的解决方案是使用名为 gnu_printf 的东西。我试图用谷歌搜索,但没有找到要包含的标题。
所以问题是应该如何处理以便便携?我只是想以正确且不马虎的方式摆脱警告。
【问题讨论】:
-
我仍然使用 PRIu64/PRId64 和类似方法收到警告...这是因为您编写的语法与 C++ 11 不兼容
-
如果您觉得您有其他答案尚未涵盖的解决方案,我们鼓励您发布答案。请不要编辑问题以包含答案。我已回滚您的编辑。