I have had to #ifdef all my printf code in 50+ programs because of this problem.
will this be fixed in mingw as well?
 
-------------
Jim Michaels
jmichae3@yahoo.com
JimM@JimsComputerRepairandWebDesign.com
http://JimsComputerRepairandWebDesign.com
http://JesusnJim.com (my personal site, has software)
---
Computer memory measurements, SSD measurements, microsoft disk size measurements (note: they will say GB or MB or KB or TB when it is not!):
[KiB] [MiB] [GiB] [TiB]
[2^10B=1,024B=1KiB]
[2^20B=1,048,576B=1MiB]
[2^30B=1,073,741,824B=1GiB]
[2^40B=1,099,511,627,776B=1TiB]
hard disk industry disk size measurements:
[KB] [MB] [GB] [TB]
[10^3B=1,000B=1KB]
[10^6B=1,000,000B=1MB]
[10^9B=1,000,000,000B=1GB]
[10^12B=1,000,000,000,000B=1TB]




From: David Cleaver <wraithx@morpheus.net>
To: mingw-w64-public@lists.sourceforge.net
Sent: Saturday, December 17, 2011 11:50 AM
Subject: Re: [Mingw-w64-public] printf issues...


On 12/17/2011 10:41 AM, Kai Tietz wrote:
> 2011/12/17 Ozkan Sezer:
>> On Sat, Dec 17, 2011 at 6:09 PM, David Cleaver wrote:
>>>
>>>
>>> On 12/17/2011 9:24 AM, Ozkan Sezer wrote:
>>>> On Sat, Dec 17, 2011 at 4:49 PM, David Cleaver  wrote:
>>> I know that putting
>>> #define __USE_MINGW_ANSI_STDIO 1
>>> at the top of the code will allow my build to be able to use %llu to print the
>>> 64-bit variable.  However, I'm wondering why his compiler warns about the
>>> unknown llu modifier, but still prints the full 64-bit value.
>>
>> I don't have an answer for that,
>
> The ll width specifier isn't supported by all msvcrt version.
> Equivalent for target would be I64.  Beginning with OS Vista (IIRC)
> the msvcrt printf/scanf faimily routines are supporting ll, too.  But
> to avoid breakage with older msvcrt, gcc has to warn about it.
>
> See msvcrt.dll's version.  It is related to it.

I see lots of information online regarding when Visual Studio/Visual C++
versions started being able to use the ll modifier (since version VC++ 2003/7.1,
apparently), but I don't see the same information detailing when msvcrt.dll was
able to use the ll modifier.

On my Windows XP x64 SP2 computer, my c:\windows\system32\msvcrt.dll has version
7.0.3790.3959.  I'd like to compile a list of msvcrt.dll versions and whether or
not they support the ll modifier.

Would others on this list try to compile the following test program to see
whether or not the full 64bit number is printed?  And after that, could you
report back here to let us know if it worked or not, and what version of
msvcrt.dll you have, and what version of OS you are running?

#include <stdio.h>
#include <inttypes.h>

int main(void) {
uintmax_t x = 1125899906842749LL;
printf("%llu\n", x);
return 0;
}




Kai/Ozkan, so when I compile a program with printf, how does mingw64 know which
OS dll will handle the printf.  Or is an assumption made that msvcrt.dll will be
available to handle the request?  Or do you just past the printf "to the OS" and
the OS knows how to fill the printf request?

-David C.

------------------------------------------------------------------------------
Learn Windows Azure Live!  Tuesday, Dec 13, 2011
Microsoft is holding a special Learn Windows Azure training event for
developers. It will provide a great way to learn Windows Azure and what it
provides. You can attend the event by watching it streamed LIVE online. 
Learn more at http://p.sf.net/sfu/ms-windowsazure
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public