This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Signedness of wchar_t and wint_t leads to problems with gcc -Wsign-conversion
- From: "Michael Kerrisk (man-pages)" <mtk dot manpages at gmail dot com>
- To: Szabolcs Nagy <szabolcs dot nagy at arm dot com>, Andreas Schwab <schwab at suse dot de>
- Cc: mtk dot manpages at gmail dot com, nd at arm dot com, "libc-alpha at sourceware dot org" <libc-alpha at sourceware dot org>, Igor Liferenko <igor dot liferenko at gmail dot com>
- Date: Mon, 21 Nov 2016 14:06:48 +0100
- Subject: Re: Signedness of wchar_t and wint_t leads to problems with gcc -Wsign-conversion
- Authentication-results: sourceware.org; auth=none
- References: <CAKgNAkhjsE=OpLj=S9btNBQVj-OAr7Fd3y6RDp4M7SFkoPGHbg@mail.gmail.com> <mvm8tsd0zoq.fsf@hawking.suse.de> <CAKgNAkiZWYo4TdVhXhpiPhsdYBtMOJ0PWePTA2p1BKFBaWv=Ag@mail.gmail.com> <5832F017.7050506@arm.com>
On 11/21/2016 02:01 PM, Szabolcs Nagy wrote:
> On 21/11/16 12:54, Michael Kerrisk (man-pages) wrote:
>> So, I'm not quite clear on the point that you are making in your
>> second point. Given code such as:
>>
>> wchar_t w;
>> ...
>> if (iswlower((wint_t) w) ....
>>
>> Do you mean that the standards are saying that casting to wint_t here
>> is guaranteed to be correct? I can't see the line of reasoning that
>> leads there.
>
> an implementation is allowed to support wide
> characters with >=0 value only (independently
> of signedness of wchar_t).
Yes, it's allowed to, but it may also do otherwise, as in there
may be implementations where wchar_t runes are negative (right?).
> in which case (wint_t)w is ok.
Yes, but from the perspective of portable code, it's still
not clear to me that the cast is okay on every possible
implementation of 'wchar_t' and 'wint_t'.
Cheers,
Michael
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/