記憶を消せるようになったら、えーと、んーと、消したい記憶なんてないな・・・。
例えば、std::ios::_Openmodeはファイルストリームのオープンモードを指定する引数の型です。
他の環境は知りませんが、VC.NETではそうなってます。
しかーしながら、WindowsCE4.2ではそもそもストリームがないので、std::ios::_Openmodeなんてありません。
したがって、もしstd::ios::_Openmodeをどっかで使っているソースがあるとして、それをCE環境でコンパイルしようとしても無理な話です。(そもそもストリームがないんだから、そんなことをしたらだめだろう、といいたいでしょうがそこは度外視で。)
よって、どーしてもstd::ios::_Openmodeを使いたいんだ!という場合には定義するしかありません。
namespace std {
class ios {
public:
typedef int _Openmode;
static const _Openmode binary = 0; // vc6.0 だと未対応
static const _Openmode app = 1;
}
}
素直にやれば上記のようにすればいいと思われます。std::ios::binaryが使えるはずです。
が、VC6やそれを基盤としているEmbeddedVC4.0では上記のような「static const 整数」のヘッダでの初期化に対応していません。(言語仕様的には”static const 整数型”の場合はヘッダで初期化していい、はず。)
そこでどうするか。
namespace std {
namespace ios {
typedef int _Openmode;
static const _Openmode binary = 0; // これならヘッダで初期化OKっぽい。staticなので翻訳単位はインクルードファイルに限定される。
static const _Openmode app = 1;
}
}
上記のようにnamespaceでごまかせました。std::ios::binaryが使えます。
・・・用途あるのかな。
以上