On 07/10/10 22:50, Dan McGee wrote:
On Wed, Oct 6, 2010 at 8:40 PM, Allan McRae<[email protected]>  wrote:
Signed-off-by: Allan McRae<[email protected]>
---

wint_t appears to be the same as size_t or unsigned long. It probably best if
someone checks that is the right format specifier on x86_64 too...

man wchar.h:
        The implementation shall support one or more  programming  environments
        in which the width of wint_t is no greater than the width of type long.

man printf(3):
        l      (ell) A following integer conversion corresponds to a
long int or unsigned long int argument, or a following n conversion
corre‐
               sponds to a pointer to a long int argument, or a
following c conversion corresponds to a wint_t argument, or a
following s  con‐
               version corresponds to a pointer to wchar_t argument.

So we should really be using '%lc', it sounds like clang is busted...

What does printf("%ls", p) give you? This isn't actually right because
we don't want to print the full string, just one character, but it
would be interesting to see if they implemented half of the spec.


Same error with %ls.

util.c:264:13: error: conversion specifies type 'int *' but the argument has
      type 'wint_t' (aka 'unsigned int') [-Wformat]
                printf("%ls", (wint_t)*p);
                        ~~^   ~~~~~~~~~~
                        %u
1 error generated.

Reply via email to