ページ 11

c++のmap宣言にて。

Posted: 2008年2月22日(金) 14:27
by みらの
VC++ 6.0にて
下記のC++をビルドすると
やたら警告が出るのですが何故でしょうかね・・・

#include <map>
#include <string>

using namespace std;

void main()
{
map<string,string> a;
}


警告文
warning C4786: 'std::_Tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >,std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<st
d::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::it
erator' : デバッグ情報で識別子が 255 文字に切り捨てられました。
warning C4786: 'std::_Tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >,std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<st
d::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_N
ode' : デバッグ情報で識別子が 255 文字に切り捨てられました。
warning C4786: 'std::_Tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >,std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<st
d::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_R
edbl' : デバッグ情報で識別子が 255 文字に切り捨てられました。
warning C4786: 'std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::
allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : デバッグ情報で識別子が 255 文字に切り捨てられました。
warning C4786: 'std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::
allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::value_compare' : デバッグ情報で識別子が 255 文字に切り捨てられました。
warning C4786: 'std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::
allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn' : デバッグ情報で識別子が 255 文字に切り捨てられました。
リンク中...

test.exe - エラー 0、警告 76

Re:c++のmap宣言にて。

Posted: 2008年2月22日(金) 14:30
by たかぎ
> warning C4786

これは典型的な無視すべき警告です。
うるさいので、
#pragma warning(disable:4786)
をソースの最初に記述しておくとよいでしょう。
できれば、すべてのソースからインクルードされるヘッダに最初にでも入れておくと楽です。

Re:c++のmap宣言にて。

Posted: 2008年2月22日(金) 14:34
by みらの
凄いすっきりしました!!!!!

ありがとうございますっ!
助かりましたっ

Re:c++のmap宣言にて。

Posted: 2008年2月22日(金) 14:55
by バグ
std::mapに限らず、STL関連のクラスを使用しようとすると、かなりの高確率で警告が出ますよね…。
MicroSoftからすれば、MFCを使えという事なんでしょうね…きっと(あくまで推測です)

Re:c++のmap宣言にて。

Posted: 2008年2月22日(金) 15:26
by 組木紙織
VS2005だとそのような警告は全くと言っていいほどでないです。

改良されたのかな。

Re:c++のmap宣言にて。

Posted: 2008年2月22日(金) 15:57
by GPGA
VC6.0では識別子が255文字で警告が出ましたが、VS2005では4096文字以上にならないと
警告は出ません。超えた場合はC4503警告が出ます。

Re:c++のmap宣言にて。

Posted: 2008年2月22日(金) 16:20
by たかぎ
> VS2005では4096文字以上にならないと警告は出ません。

かなりましにはなりましたが、名前空間が深くなると簡単に超えてしまいそうです。