From: Keith.S.Thompson+u@gmail.com
Michael S writes:
> On Sun, 11 Jan 2026 11:51:43 -0800
> Tim Rentsch wrote:
>> Michael S writes:
[...]
>> > Properties are:
>> > a) uint32_t aliased to 'unsigned long'
>> > b) 'unsigned int' is at least 32-bit wide.
>>
>> It seems unlikely that any implementation would make such a
>> choice. Can you name one that does?
>
> Four out of four target for which I write C programs for living in this
> decade:
> - Altera Nios2 (nios2-elf-gcc)
> - Arm Cortex-M bare metal (arm-none-eabi-gcc)
> - Win32-i386, various compilers
> - Win64-Amd64,various compilers
I find that surprising. I just tried a test program that prints
the name of the type uint32_t is an alias for (using _Generic),
and it's alias to unsigned int on every implementation I tried.
(Your properties are limited to systems with 32-bit int and long.)
For an implementation where int and long are both 32 bits, it
wouldn't have surprised me for uint32_t to be an alias either for
unsigned int or for unsigned long, and I wouldn't care either way
beyond idle curiosity, but all the implementations I've tried choose
to use unsigned int.
> Well, if I would be pedantic, then in this decade I also wrote several
> programs for Arm32 Linux, where I don't know whether uint32_t is alias
> of 'unsigned int' or 'unsigned long', few programs for AMD64 Linux,
> where I know that uint32_t is an alias of 'unsigned long' and may be one
> program for ARM64 Linux that is the same as AMD64 Linux.
> But all those outliers together constitute a tiny fraction of the code
> that I wrote recently.
One advantage of my approach is that I don't have to know or care
what the underlying type of uint32_t is.
--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */
--- SoupGate-Win32 v1.05
* Origin: you cannot sedate... all the things you hate (1:229/2)
|