размер 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 *
были одного размера)