Visual C++ 2010 Express

> //ファイルの読み込み
> szXMLDoc = (char*)new char[uFileSize + 1];


上みたいなコードを書いていたら下みたいな警告が吐かれてしまった。


>warning C4244: '初期化中' : 'fpos_t' から 'unsigned int' への変換です。データが失われる可能性があります。


fpos_t を unsigned int に変換しているのは確かに悪いのだが、
fpos_t が 64bit になっているのでどうキャストしたものか悩む。
u64 にキャストしても結局警告がでるし、u32 にキャストするとそれこそ不具合の種になる。
手馴れた人はよい解決方法を知っているのだろうけど初心者はいちいちこんなところで躓いてしまう。


ぶっちゃけた話として厳密にエラーチェックするコードを組む必要はないのだが、
それを言い出すとそもそもプログラミングする必要自体がない。
色々考えても結局のところ「躓いただけ成長する」という結論に至るのでそれを考えるのは無駄だ。


new をオーバーロードするのかとか頭をひねっていたが、
冷静になって考えると 32bit アプリなんだから 4GB 以上メモリを確保できるわけはない。
つまりこんな場合は分割ロードして処理するしかないわけだ。
なんという面倒臭さか。
ただこれで諦めてアサートチェックすることに踏ん切りがついた。


こんなペースでやってたらそりゃあぜんぜん進まないわけだ。