[LLVMdev] Say hi to VMKit: JVM/LLVM, CLI/LLVM
Chris Lattner
sabre at nondot.org
Thu Mar 27 21:16:53 PDT 2008
On Mar 27, 2008, at 2:18 PM, Eric Gouriou wrote:
>
> On Mar 26, 2008, at 12:23 PM, Török Edwin wrote:
> [...]
>>> 2) ISO C++ does not support %jd. x86_64 does not know about %lld?
>>>
>>
>> It does, but gcc gives a warning, if I use %lld I get a warning on
>> x86_64, if I %ld I get a warning on x86-32.
>> int64_t is long int on x86-64. However sizeof(long int) ==
>> sizeof(long
>> long int), so I don't know why gcc insists it is wrong.
>> I only found %jd which doesn't give warnings on either:
>
> To print a int64_t value, use PRId64 from inttypes.h if you can.
>
> #include <inttypes.h>
>
> int64_t x = ...;
> printf("x=%"PRId64"\n", x);
>
> It's ugly at first, but portable (provided inttypes.h ...).
Unfortunately, inttypes.h isn't portable either :(.
I'd suggest:
printf("%lld", (long long)x);
which is guaranteed to work and is fine on any system where
sizeof(int64_t) == sizeof(long long). LLVM already makes lots of
assumptions that this is true already, so one more won't hurt.
-Chris
More information about the llvm-dev
mailing list