Win2K VC++6.0 SP5 MFC です。
現在、
<Data.h>
struct StData {
...
};
typedef map<ULONG, StData> CDataMap;
class CData {
private:
CDataMap m_oDataMap;
public:
...
};
といったことをやっているのですが、Data.h をインクルードしている
ファイルのコンパイルで テンプレート特有の Warning (識別子が '255'
文字に切り捨てられました) がものすごくたくさん出ています。
不思議なことに、くらす CData をインプリメントしている Data.cpp の
方では、全くこの手の Warning はでないのですが、このヘッダをインクルード
しているソースのコンパイルで出ます。
Warning ですし、デバッグ情報が exe に織り込めないという警告ですから、
動作には問題ないとは思いますが、コンパイルのする度にこれでもかと Warning
を見せられるのは、ストレスがたまるし、コンパイルエラーが見づらくなっています。
map や vector などの STL より、MFC の CArray, CMap の方がでにくい
ようだし、map よりは 配列の方が出にくいようなので、std::map で定義して
いたものを、CArray で定義しなおすと、Warning は止まったりしました。
(キー検索の部分は、線形探索で置き換え)
しかし map の方が便利だし、できれば MFC より、STL を使いたい。
(CMap::operator[] は左辺値にしか使えないみたいだし)
http://www005.upp.so-net.ne.jp/episteme/html/stlprog/_08.html#stl_prob
↑このページを見ると、上記のようなことはよくあるらしいのですが、
Warning が出てないファイルは出てないし……
std::map を使用して尚、Warning を出さない方法をご存知の方、ご教唆願います。
そのヘッダファイルの先頭で
#pragma warning( disable : 4386 )
を入れるとどうなりますか?
tib さん、返答ありがとうございます。
やはり出現しました > warning
出ている Warning は C4786 でした。
#pragma warning( disable : 4786 )
に変えても駄目でした。
しかし問題のクラスを実装している方は相変わらず出ないです。
ちょうどこんな話題がありました。
http://cgi.members.interq.or.jp/gold/marken/bbs.htm
バグというのは、恐らくこれのことでしょう。
「FIX: C4786 Warning Is Not Disabled with #pragma Warning」
http://support.microsoft.com/support/kb/articles/Q167/3/55.ASP
dairygoods さん、ありがとうございます。
参照ページを見てマネしたところ消えました。
ありがとうございます。
ソースの末尾にdummyFunc() をいれると出なくなるというのは、再現しません
でしたが、目的は果たせました。
今日一日 Warning のせいでだいぶストレスあがってたので、ホッとしました。
ありがとうございました。
かいけつ