[メモ] 符号有無を変えるだけのキャストを間違えないように
バグかよ>俺
再発防止策。
今後もひょんなところで間違えちゃったりするかも知れないので、本当は、専用クラス作って、operator()とか実装したり、なんかするといいんだろうし、多分、探せばあるんだろうけど、まぁ、数行で対応できるので。
#define DEF_changesigntype(T) \
inline unsigned T to_unsigned(T x) { return (unsigned T) x; } \
inline unsigned T to_unsigned(unsigned T x) { return x; } \
inline T to_signed(unsigned T x) { return (T) x; } \
inline T to_signed(T x) { return x; }
DEF_changesigntype(char)
DEF_changesigntype(short)
DEF_changesigntype(int)
DEF_changesigntype(__int64)
これで、整数型符号有無変換キャスト関数to_unsigned、to_signedオーバーロードのできあがり。
共通ヘッダ(stdafx.h)にでも仕込んどけばいいと思われ。
char a = –1;
int b = to_unsigned(a);
ちゃんとbに255が得られる安心感。
define使うのがちょっと気持ち悪いけど、キャスト指定をコードに直接書くよりは遥かにマシではなかろうかね?
| 固定リンク
「趣味」カテゴリの記事
- パケット採取ツールでも載せておこうか(2009.09.29)
- どこでも検索(2009.09.30)
- 自作Excelアドイン関数のXLLがベクター登録でダウンロード可能に。MD5対応版(2009.10.02)
- バグかよ>俺(2009.10.07)
- シェアウェア登録方法がよく分からん(2009.10.09)
この記事へのコメントは終了しました。


コメント