charN_t in freestandingAuthors: Jay Ghiron
Date: 2026-06-03
Submitted against: C23
Status: Open
The header <uchar.h> is not required to be supported on freestanding
implementations, so the types therein do not need to be defined on
freestanding implementations. However, character constants and string
literals which use those types are still available on freestanding
implementations. Without <uchar.h> being provided it is not clear
what the types of those expressions should be:
#include<stdint.h>
typedef uint_least16_t T;
typedef typeof(u' ')T;
On a hosted implementation this must be valid, must it also be valid
on a freestanding implementation? If this does not need to be valid
on a freestanding implementation, what is the meaning of a character
constant or a string literal which in either case uses one of the
encoding prefixes u8, u, or U?