English 中文(简体)
%llx格式投机:无效警告?
原标题:%llx format specifier: invalid warning?
  • 时间:2011-04-05 07:38:37
  •  标签:
  • c++
  • c++11
  • g++

http://www.ohchr.org。

The following code work as expected in g++ 4.4.0 under mingw32:

#include <cstdio>
int main()
  {
  long long x = 0xdeadbeefc0defaceLL ;
  printf ("%llx
", x) ;
  }

但是,如果我能够用<代码>-Wall发出所有警告,那么它就说:

f.cpp: In function  int main() :
f.cpp:5: warning: unknown conversion type character  l  in format
f.cpp:5: warning: too many arguments for format

该编码与<代码>%lld相同。 这是否在新版本中确定?

Edited again to add:
The warning doesn t go away if I specify -std=c++0x, even though (i) long long is a standard type, and (ii) %lld and %llx seem to be officially supported. For instance, from 21.5 Numeric conversions para 7:

Each function returns a string object holding the character representation of the value of its argument that would be generated by calling sprintf(buf, fmt, val) with a format specifier of "%d", "%u", "%ld", "%lu", "%lld", "%llu", "%f", "%f", or "%Lf", respectively, where buf designates an internal character buffer of sufficient size.

因此,这确实是一个 b?

最佳回答
long long x = 0xdeadbeefc0defaceLL; // note LL in the end

没有<代码>ll 长度查询仪。 最好的是:

printf ("%lx
", x); // l is for long int

I ve tested your sample on my g++, it compiles without errors even without -std=c++0x flag:

~$ g++ -Wall test.cpp
~$ g++ --version
g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3

So, yes, this fixed in newer versions.

问题回答

For first warning I can say that you must use 0xdeadbeefc0defaceLL instead of 0xdeadbeefc0deface. After that other warnings may pass also.

I get the same warning compiling C using windows/mingw32.

warning: unknown conversion type character  l  in format

So yes, probably a compiler/platform specific bug.

It s a Mingw-specific issue, because it calls the native Windows runtime for certain things, including this. See this answer.

%I64d works for me. In the answer linked above there is a more portable albeit less readable solution as well.





相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?

热门标签