В С типа uint16_t нет, но uint16_t есть в stdint.h - нужно только его подключить (если он гдето в либах не подключен, что в последнее время встречается редко). А Вы так и пишете всюду uint16_t ?
В новых проектах так и пишу, в старых по старинке - unsigned short и тп.
А если в каком-нибудь GCC или не будет переопределен?
С чего это не будет ? stdint.h - уже стандарт. Хотя за все платформы что ГЦЦ поддерживает не скажу.
CodeVision
Не дай бог с этим связываться.