[pacman-dev] [PATCH] Fix compile error with clang-2.8
Dan McGee
dpmcgee at gmail.com
Thu Oct 7 09:14:04 EDT 2010
On Thu, Oct 7, 2010 at 8:05 AM, Rémy Oudompheng
<remyoudompheng at gmail.com> wrote:
> Allan McRae <allan at archlinux.org> wrote:
>> On 07/10/10 22:50, Dan McGee wrote:
>>>
>>> On Wed, Oct 6, 2010 at 8:40 PM, Allan McRae<allan at archlinux.org> wrote:
>
>>> 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.
>>
>
> I may be a C newbie, but is (wint_t)*p the same as (wint_t)(*p) ? It
> would explain the pointer/integer confusion.
printf("%ls", (wint_t)*p); != printf("%ls", p)
And the mailing list message I mentioned seemed old enough that it
should have snuck into clang 2.8...
-Dan
More information about the pacman-dev
mailing list