次のコード行があります。
ftDCB.ByteSize = FT_BITS_8;
そして、lint (具体的には Visual Lint 経由の PC-lint) は、メッセージ 1924 を表示します (「C スタイルのキャスト -- より効果的な C++ #2」)。
FT_BITS_8 はサード パーティのヘッダー ファイルで #defined であり、キャストは次の場所にあります。
#define FT_BITS_8 (UCHAR) 8
UCHAR は、別のサードパーティのヘッダー ファイルからの typedef です。
typedef unsigned char UCHAR;
それが割り当てられているもの (ftDCB.ByteSize) は BYTE であり、これは unsigned char の typedef でもあります。
typedef unsigned char BYTE;
サードパーティのヘッダーを変更したくないので、コードでメッセージを抑制しようとしました:
//lint -e(1924) C-style cast
ftDCB.ByteSize = FT_BITS_8;
しかし、同じ 1924 メッセージが表示されます。
ここで何が間違っていますか?そして、私が達成したいことを行うためのよりクリーンな方法はありますか (サードパーティのヘッダーを変更する以外に)?