Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #394640
| From | Keith Thompson <Keith.S.Thompson+u@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: u8"" c11 c23 |
| Date | 2025-10-21 11:51 -0700 |
| Organization | None to speak of |
| Message-ID | <87jz0onl4z.fsf@example.invalid> (permalink) |
| References | <10d5vck$3kufd$1@dont-email.me> <875xc9p674.fsf@example.invalid> <10d7ouh$3rq3g$1@dont-email.me> <87o6q0np3b.fsf@example.invalid> <10d8hv0$3rg4$1@dont-email.me> |
Thiago Adams <thiago.adams@gmail.com> writes:
> On 10/21/2025 2:26 PM, Keith Thompson wrote:
>> Thiago Adams <thiago.adams@gmail.com> writes:
>>> On 10/20/2025 7:19 PM, Keith Thompson wrote:
>> [...]
>>>> That raises another issue.
>>>> The <uchar.h> header was introduced in C99. In C99, C11, and C17,
>>>> that header defines char16_t and char32_t. C23 introduces char8_t.
>>>
>>> I think for all these typedefs related with language concepts, like
>>> size_t which is related with sizeof, char8_t which is related with
>>> u8"" char16_t u"", char32_t U""... etc.. should be built-in typedefs.
>>>
>>> And even others that does not have a association with language
>>> features like int16_t.
>> By "built-in typedefs", do you mean typedefs that are visible
>> without
>> a #include?
>>
>
> yes.
>
>> That would be unprecedented, but I suppose it could work. But I'm not
>> sure it would be all that advantageous. The type of the result of
>> sizeof is some implementation-defined unsigned integer type. The
>> <stddef.h> header merely provides a consistent name for that type.
>> I can see that having language features depend (indirectly) on types
>> defined in library headers is a bit messy, but I don't think it causes
>> any real problems.
>>
>
>
> It's not really a problem, but it depends on the includes, which in
> turn depend on the preprocessor.
>
> It seems like the language is partially configured through macros and
> typedefs in includes.
The way I'd describe it is that the type of a sizeof expression is
chosen by the compiler, and the definition of size_t in <stddef.h>
documents that choice and makes it visible to programmers.
> Some types that have direct relation with the language:
>
> typedef typeof_unqual(sizeof(0)) size_t;
> typedef typeof_unqual(((char*)1)-((char*)0)) ptrdiff_t;
> typedef typeof_unqual(u8' ') char8_t;
> typedef typeof_unqual(u' ') char16_t;
> typedef typeof_unqual(U' ') char32_t;
> typedef typeof_unqual(L' ') wchar_t;
> typedef typeof_unqual(nullptr) nullptr_t;
>
> I think it does not make sense to have to include a file to describe
> size_t because we can use sizeof without having to include anything.
I suppose if I were defining a new language from scratch, I probably
wouldn't have those types defined in library headers. I might have
made size_t a keyword, for example.
One data point: C++ has wchar_t as a keyword, while C defines it as
a typedef in <sddef.h>. C++'s wchar_t has the same representation
as one of the other integral types, called its underlying type.
That could have been a nice approach for C, but I'd say it's too
late to fix it, and the benefits aren't worth the cost.
--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
u8"" c11 c23 Thiago Adams <thiago.adams@gmail.com> - 2025-10-20 15:35 -0300
Re: u8"" c11 c23 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-10-20 15:19 -0700
Re: u8"" c11 c23 Thiago Adams <thiago.adams@gmail.com> - 2025-10-21 07:57 -0300
Re: u8"" c11 c23 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-10-21 10:26 -0700
Re: u8"" c11 c23 Thiago Adams <thiago.adams@gmail.com> - 2025-10-21 15:04 -0300
Re: u8"" c11 c23 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-10-21 11:51 -0700
Re: u8"" c11 c23 Thiago Adams <thiago.adams@gmail.com> - 2025-10-21 16:17 -0300
Re: u8"" c11 c23 Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-12-15 11:13 -0800
Re: u8"" c11 c23 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-12-15 14:27 -0800
Re: u8"" c11 c23 Thiago Adams <thiago.adams@gmail.com> - 2025-12-16 07:57 -0300
Re: u8"" c11 c23 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-12-16 04:17 -0800
Re: u8"" c11 c23 Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-12-21 22:37 -0800
Re: u8"" c11 c23 Bonita Montero <Bonita.Montero@gmail.com> - 2025-10-21 10:35 +0200
Re: u8"" c11 c23 Thiago Adams <thiago.adams@gmail.com> - 2025-10-21 07:07 -0300
Re: u8"" c11 c23 Bonita Montero <Bonita.Montero@gmail.com> - 2025-10-21 12:09 +0200
Re: u8"" c11 c23 BGB <cr88192@gmail.com> - 2025-12-16 14:59 -0600
csiph-web