Обычные грабли при написании портируемых программ на си это, скажем, различные размеры int, (без)знаковость char итп.
И вот что подумалось. Эти все навороты вообще нужны? Мне кажется, это тяжкое наследие старины когда байт мог быть и не 8бит. Сейчас от этого лишь проблемы. Т.е. имеет смысл перейти, скажем, int8_t, int32_t... А вы что думаете? И нужны ли дополнительные обёртки типа size_t?