Используйте взамен uint16_t - это гарантировано, что stdint.h будет точно 16-битным или предотвратит компиляцию, если в архитектуре невозможно 16-битное значение.
Если вы просто хотите проверить, рассмотрите возможность использования C_ASSERT (sizeof (T) == 2) - это вызовет ошибку времени компиляции, если T имеет значение , а не 2 байта. Таким образом, вы можете знать, что T имеет длину 2 байта в каждом скомпилированном двоичном файле (поскольку, если бы это было не по какой-то странной причине компилятора, сборка не удалась бы).