Mercurial > hg > dmlib
changeset 1145:af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 05 Mar 2015 02:37:10 +0200 |
parents | 7842e977d3df |
children | b412470ec606 |
files | src/dmlib.h |
diffstat | 1 files changed, 47 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dmlib.h Thu Mar 05 02:35:21 2015 +0200 +++ b/src/dmlib.h Thu Mar 05 02:37:10 2015 +0200 @@ -29,6 +29,53 @@ # define __USE_MINGW_ANSI_STDIO 1 # endif #endif + +#if !defined(DM_ARCH) +# if defined(__LP64__) || defined(_LP64) +# define DM_ARCH 64 +# else +# define DM_ARCH 32 +# endif +#endif + +#if !defined(DM_ARCH) && (defined(__WIN64) || defined(_WIN64)) +# define DM_ARCH 64 +#endif + +#if !defined(DM_ARCH) && (defined(__WIN32) || defined(_WIN32)) +# define DM_ARCH 32 +#endif + + +// Do we have a valid arch? +// If so, set some printf specifiers +#if DM_ARCH == 32 +# define DM_ARCH_32BIT 1 +# define DM_PRIu32 "u" +# define DM_PRId32 "d" +# define DM_PRIx32 "x" +# define DM_PRIu64 "llu" +# define DM_PRId64 "lld" +# define DM_PRIx64 "llx" +# define DM_PRIu_SIZE_T "u" +# define DM_PRId_SSIZE_T "d" +# define DM_PRIx_SIZE_T "x" +#elif DM_ARCH == 64 +# define DM_ARCH_64BIT 1 +# define DM_PRIu32 "u" +# define DM_PRId32 "d" +# define DM_PRIx32 "x" +# define DM_PRIu64 "lu" +# define DM_PRId64 "ld" +# define DM_PRIx64 "lx" +# define DM_PRIu_SIZE_T "lu" +# define DM_PRId_SSIZE_T "ld" +# define DM_PRIx_SIZE_T "lx" +#else +# error Could not determine architecture (32/64bit), please define DM_ARCH=32 or 64 +#endif + + #ifdef __cplusplus extern "C" { #endif