在Windows 64x下的GCC中的printf和%llx

前端之家收集整理的这篇文章主要介绍了在Windows 64x下的GCC中的printf和%llx前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在我的程序中摆脱虚伪的警告.在 Windows 64下(在linux下没有这样的警告)这个语句:
printf("%llu",UINT64_MAX);

生成以下警告:

warning: unknown conversion type character 'l' in format [-Wformat]|

输出似乎是正确的,警告不应该在那里.最相关的gcc相关文章我可以找到这个bug报告从2008 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37768回来

如果我按照这样的理解正确,这个警告源于这样一个事实,即在gcc下,gcc调用不符合C99的MSVC printf,并且无法理解printf中的unsigned long long格式.从同一页面,建议的解决方案是使用名为gnu_printf的东西.我试图google,但我没有找到一个标题包括.

所以问题是为了便于携带,应该如何处理?我只是想以正确和非草率的方式摆脱警告.

编辑:对于那些在将来问题的人来说,由于回答者提供的链接,便携式的答案是使用头文件inttypes.h.

这里有更多的信息:
en.wikipedia.org/wiki/C_data_types
而printf的正确方法是:

printf("%"PRIu64"",UINT64_MAX);
我猜你可能已经知道了,从http://comments.gmane.org/gmane.comp.gnu.mingw.w64.general/4670(注:死链接;见 Internet Archive’s copy),

the issue is that formatter-width specifier %ll isn’t supported for
all msvcrt-DLL versions,therefore gcc warns about its use. The
variant for specifying 64-bit integer-scalar-width in formatter for
msvcrt in a backward-compatible way is by using %I64.

猜你在找的Windows相关文章