The following printf variables are missing %llx and %zx and produce warnings.
warning: unknown conversion type character 'l' in format
warning: unknown conversion type character 'z' in format
That is because of the limitations of MS versions of the printf family of functions, but we include the __mingw_ prefixed versions of them to overcome those compatibility issues. Can you try using __mingw_fprintf instead?
Is this only a 64-bit issue because official MinGW does not need __mingw_ prefixed?
Not actually an 64 bit issue, but due to differences in implementation: I think you are defining __USE_MINGW_ANSI_STDIO in your programs in order to get standard behavior, yes? In mingw-w64 runtime, we don't auto-replace printf family functions when __USE_MINGW_ANSI_STDIO is defined, because a user may want both of the MS and ANSI functionalities side by side in the same source file, that should be why you aren't having the experience you used to have with mingw32.
I've done a complete content search of the source and i don't see __USE_MINGW_ANSI_STDIO defined anywhere. Maybe theres some alternate in the makefiles?
OS dependent makefile
It may also be defined in of the header files and/or *.c files (I really am not familiar with that source.) If it is not, then I'm out of answers ;)
Alexey is on that to support the __USE_MINGW_ANSI_STDIO in our header-set. We implement it in a bit different way, but the final result should fix this bug.
We redefine the printf macros so, that origin msvcrt version is shadowed, but still reachable in some places.
Ok fixed. Committed revision 1246.
Log in to post a comment.