warnings bei Verwendung von map<>
-
Wenn ich eine map erstellen will kommen bei diesem Beispiel hier 77 Warnungen. Warum?
#include <map> #include <string> #include <iostream> using namespace std; int main(void) { map<string, int> ages; return 0; }So in der Art:
Warnungen schrieb:
c:\programme\microsoft visual studio\vc98\include\xtree(120) : 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 ,int>
,std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<int> >::_Kfn,std::less<std::basic_string<char,std::char_traits<char>,s
td::allocator<char> > >,std::allocator<int> >' : identifier was truncated to '255' characters in the debug information
c:\programme\microsoft visual studio\vc98\include\map(46) : see reference to class template instantiation '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 ,int>,std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<int> >::_Kfn,std::less<std::basic_
string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<int> >' being compiled
C:\Dokumente und Einstellungen\Rohrbach\Eigene Dateien\visualstudio-workspace\maptest\code.cpp(9) : see reference to class template instantiation 'std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int,std::less<st
d::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<int> >' being compiled
c:\programme\microsoft visual studio\vc98\include\xtree(120) : 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 ,int>
,std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<int> >::_Kfn,std::less<std::basic_string<char,std::char_traits<char>,s
td::allocator<char> > >,std::allocator<int> >::const_iterator' : identifier was truncated to '255' characters in the debug information
-
identifier was truncated to '255' characters in the debug information
Da hast du den Inhalt der Warnung - für den Debugger darf ein Identifier maximal 255 Zeichen lang sein, deshalb werden diese langen Namen (und durch die ganzen Template-Verschachtelungen und Defaultparameter dehnt sich der Name "map<string,int>" etwas). Die Warnung kannst du normalerweise ignorieren oder per #pragma abschalten.
-
Map ist dafür berüchtigt, mit VC dieses Problem zu verursachen. Aber: Bei Map macht das nichts. Das funktioniert trotzdem immer.
Prüfen würde ich das nur, wenn diese Warnungen sich auf Code außerhalb der STL beziehen. Führt aber wahrscheinlich auch zu der Bewertung, daß es egal ist.
Wie gesagt: Am besten einmal nachsehen und dann in den Projekteigenschaften die Warnung abschalten (Einfach die Nummer eingeben).
-
Sid2K6 schrieb:
Map ist dafür berüchtigt, mit VC dieses Problem zu verursachen. Aber: Bei Map macht das nichts. Das funktioniert trotzdem immer.
Prüfen würde ich das nur, wenn diese Warnungen sich auf Code außerhalb der STL beziehen. Führt aber wahrscheinlich auch zu der Bewertung, daß es egal ist.
Wie gesagt: Am besten einmal nachsehen und dann in den Projekteigenschaften die Warnung abschalten (Einfach die Nummer eingeben).
Afaik aber auch nur in der 6er Version. Und anhand der Fehlermeldungen sieht man das sogar "vc98" => VC6

Wie es in 7.0 aka 2002 weiß ich nicht aber in 7.1 aka 2003 macht das definitiv keine probleme. Da kann man sogar ganz andere Template Spielereien machen und es geht wunderbar.
Imho einfach ein VC6 Problem. Wenn es nicht zwingend vorgeschrieben ist würde ich die VC++2k5 Express Edition empfehlen.
Die macht sich bisher bei mir ganz gut

Arbeitstechnisch bin ich glücklicherweise an den 2003er gebunden und muss mich net mit solchen Problemen wie beim VC6 rumschlagen *fg*
Privat verwende ich vorallem den 2005er (momentan die VS 2k5 Professional 180-Tage Test Version die ich mir von MS hab zuschicken lassen *fg*)
BR
-
Es ist schon irgendwie total lächerlich das Microsoft Visual C++ 6 in so einem Zustand ausgeliefert hat. Etwas so alttägliches darf doch keine Warnung auslösen.
-
Dann schau Dir mal g++ Versionen aus dieser Zeit an

-
meihnunk schrieb:
Es ist schon irgendwie total lächerlich das Microsoft Visual C++ 6 in so einem Zustand ausgeliefert hat. Etwas so alttägliches darf doch keine Warnung auslösen.
Waren Template zu der Zeit tatsächlich etwas alltägliches?

-
Okay, danke für die vielen Antworten. Mit #pragma bekomm ich es irgendwie nicht hin, die Fehlermeldungen abzustellen.
Kann mir mal einer fix sagen, wie ich Warnungen im VC++ 6 abstellen kann. Finde die Option einfach nicht.
-
Es geht nur über die #pragma Anweisung.
-
ich tippe mal auf
#pragma warning ( disable : 4786 )