-----Original Message----- From: Liu Hao
Sent: Thursday, June 22, 2017 11:46 AM
To: mingw-w64-public@lists.sourceforge.net
Subject: Re: [Mingw-w64-public] how to printf() 64-bit integer in 64-bit compiler in strict ISO mode with all warnings enabled?

  So, I need to printf() uint64_t in my project, which is built in strict
ISO C11 mode and with all warnings enabled.

  If I try to use "%llu" I get warning that "unknown conversion type
character 'l' in format". If I use "%I64u" I get "ISO C does not support
the 'I64' ms_printf length modifier" warning.
  And, yes, I have _POSIX_C_SOURCE defined on compiler's command line.

In order to get C99 conforming `*printf()` functions you have to `#define __USE_MINGW_ANSI_STDIO 1` before inclusion of any standard headers. One preferable way to achieve that is adding `-D__USE_MINGW_ANSI_STDIO` into your CPPFLAGS.

This is what I invariably do, too.

However, in a recent post to a gmp mailing list ( https://gmplib.org/list-archives/gmp-bugs/2017-May/004162.html ), Keith Marshall discouraged this, warning that it was *not* guaranteed to continue to work into the future.

Here's the relevant bit (from that post) of what he had to say:

[--quote--]

I would also point out that, as a "__USE_*" feature test, users should *not*
define "__USE_MINGW_ANSI_STDIO" themselves; the correct way to enable it is
to enable any of the "__STRICT_ANSI__" standards options, or to stipulate
"_GNU_SOURCE", "_POSIX_C_SOURCE", or "_XOPEN_SOURCE" feature dependencies,
(the latter two with an associated version stipulation), any of which will
cause the MinGW runtime headers to enable "__USE_MINGW_ANSI_STDIO"
implicitly.  You may get away with an explicit definition today, but I will
offer no guarantee that a future MinGW Runtime release will not override any
such definition, just as GNU's glibc headers do for their "__USE_*" feature
tests.

[--end quote--]

AFAIK Keith's allegiance is with mpfr.org, and I don't know how/if those remarks relate to mingw-w64.

Any thoughts on that ?

Cheers,
Rob



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to