размер size_t по сравнению с unsigned int

Кто-нибудь знает какую-либо комбинацию toolchain/platform/target, где максимальное значение size_t меньше максимального значения unsigned int?

Я думаю, что стандарты C и C++ позволяют это в принципе и могут (теоретически) быть полезными на некоторых сверхновых MCU, но я никогда не видел этого на практике.

Замечания:
Я намеренно отметил это как с, так и C++, так как меня интересуют ответы на оба языка (если ваш ответ специфичен для конкретного языка, скажите об этом), и я еще не видел никакой комбинации цепочки/цели, которая использует разные размеры для тех типов в c и C++ в любом случае.

Ответ 1

H8/300 можно настроить на. С GCC (с тройным h8300-elf или h8300-rtems) это флаг -mint32:

gcc/config/h8300/h8300.h:555:
#define SIZE_TYPE                               \
  (TARGET_H8300 || TARGET_NORMAL_MODE ? TARGET_INT32 ? "short unsigned int" : "unsigned int" : "long unsigned int")

Поэтому, когда -mint32 создавая 32-битный int, size_t основан на 16-битном short.

(Также обратите внимание, что для комментариев в этом файле GCC требует, чтобы size_t и void * были одного размера)