From: Brian D. <br...@de...> - 2008-04-04 00:46:38
|
Keith Marshall wrote: > Define this ONCE, in a header... > > #ifdef _WIN32 > # define LL_FMT "I64" > #else > # define LL_FMT "ll" > #endif I would be very cautious of doing this. For one thing, appropriate standardized macros already exist in inttypes.h as Peter's message outlines. But more disturbingly, _WIN32 tells something about the fact that you're using the w32api, but not that you are necessarily using Microsoft's C runtime. And it's the latter fact that you want to test for. For example if you were writing a Cygwin application that also used parts of w32api directly (and #includes windows.h) then _WIN32 will be defined yet "ll" is the correct format specifier. You see the idiom "#if defined(_WIN32) && !defined(__CYGWIN__)" all over the place in response to this, but I think it's ugly to have to use this when inttypes.h exists and works. Brian |