Issue 1073: charN_t in freestanding

Authors: 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?