wchar_t printf() format warning

Eric Blake eblake@redhat.com
Thu Mar 19 15:52:00 GMT 2015


On 03/19/2015 09:46 AM, Jonathan Roelofs wrote:

> 
> That's a platform decision, not a gcc decision. AFAIK, there is no
> language requirement that wint_t and wchar_t be the same type.

In fact, on cygwin, wchar_t is 16-bit, but wint_t is 32-bit, because
there is no free 16-bit value that can hold WEOF.  On the other hand, on
cygwin, passing wchar_t through va_arg promotes to 32-bit, so it happens
to promote to wint_t and programmers can get away without the cast -
whereas your platform was a question of wchar_t (32-bit int) not
promoting to wint_t (32-bit long), making the cast necessary unless you
can fix gcc to not use inconsistent 32-bit types.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://sourceware.org/pipermail/newlib/attachments/20150319/27cf9bee/attachment.sig>


More information about the Newlib mailing list