我想在我的程序中摆脱虚伪的警告.在
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),
原文链接:https://www.f2er.com/windows/363763.htmlthe 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
.