позиция ясна, но я не вижу противоречий. Может мы по разному понимаем BYTE и WORD? давая по-порядку.
все типы определены в одном файле подключения globalt.h
при использовании нового компилятора эти типы переопределяются для обеспечения максимальной эффективности
#ifdef _MPC_ /* Microchip PIC 8bit*/
typedef unsigned char BYTE;
#else
typedef unsigned short BYTE; //для 16битника
#endif
что такое тип BYTE у меня.
это беззнаковый тип. 0-0xff используется для счетчиков, переменных размера и т.д. Не используется в алгебраических выражениях.
WORD это беззнаковый тип 0-0xFFFF
стандартный тип должен быть не менее 2-х байт
typedef unsigned int WORD;
для миллионов есть тип DWORD
typedef unsigned long DWORD;
указатель нельзя объявлять как
WORD *pwVar;
а нужно
ptr pVar;
PWORD pwVar;
typedef char * ptr; /* Указатель */
typedef WORD NEAR *PWORD;
typedef WORD FAR *LPWORD;
Короче говоря, моё мнение -- нужно использовать максимально стандартные типы и <stdint.h> если их не хватает.
Я считаю наоборот, что стандартные типы не нужно использовать. А нужно использовать переопределенные типы. При этом переопределив тип в одном месте можно повысить эффективность выполнения программы на конкретной платформе.