#ifdef __GNUC__
#define FMT_INT64 _T("L")
#elif defined(_MSC_VER)
#define FMT_INT64 _T("I64")
#else
#error Unknown compiler for 64-bit integral constant suffix
#endif
"FMT" stands for "format string", I think this is a bit clearer than
"DEFINE" or "MAKE".
This are some usage examples:
printf("%" FMT_INT64 "d", index); /* format 64 bit decimal integer
*/
sprintf(buffer, "%" FMT_INT64 "x", index); /* format 64 bit hex
number, lower case */
sprintf(buffer, "%" FMT_INT64 "X", index); /* format 64 bit hex
number, upper case */
These don't work when compiling for a unicode build. It's relatively
common to deal with mixed strings (e.g. smtp/pop/imap/http server/client
programs should typically deal with files using unicode for paths, but
the protocol specifies ASCII strings). I would plump for
FMT_INT64A/FMT_INT64W/FMT_INT64 to take care of this.