OS/2 の BYTE が unsigned char じゃない件について

なんか(OpenWatcom の)C++ だと、関数で unsigned char * な引数をとるところに (BYTE *) でキャストしたポインタ入れるとエラーが出るんですよ。
ちくしょー C++ ってどうでもいいところで無駄に文句が多いよなあよか思いながらも念のため OS/2 のツールキットのヘッダ見たら、

typedef char            BYTE, *PBYTE, *NPBYTE;

unsigned char じゃなかった。なんてこった。if ((BYTE)ch > 0x80) { ... } みたいなコード書いてたら死ねる。あと型変換のマクロも見直さないと。
とりあえず BYTE (PBYTE) 使ってるところはもれなく UCHAR (PUCHAR) に書き直すしかないのか。むしろツールキットのヘッダを書き換えてしまいたい。