Array vs Vector vs ...
-
Klasse, werde ich heute Abend testen. Vielen Dank!!!
-
std::vector< std::vector<data> > data1_db;
führt zu:
--------------------Konfiguration: Sherlock - Win32 Debug--------------------
Kompilierung läuft...
communication.cpp
c:\programme\microsoft visual studio\vc98\include\utility(21) : warning C4786: 'std::reverse_iterator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > const *,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std
::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > const &,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > const *,int>' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
c:\programme\microsoft visual studio\vc98\include\utility(21) : warning C4786: 'std::reverse_iterator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > *,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::vect
or<CSherlockDlg::data,std::allocatorCSherlockDlg::data > &,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > *,int>' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
Generieren von Code...
Kompilieren...
Sherlock.cpp
c:\programme\microsoft visual studio\vc98\include\vector(60) : warning C4786: 'std::reverse_iterator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > const *,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std:
:vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > const &,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > const *,int>' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
c:\programme\microsoft visual studio\vc98\include\vector(58) : Bei der Kompilierung der Member-Funktion '__thiscall std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data
,std::allocatorCSherlockDlg::data > > >::~std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >(void)' der Klassenvorlage
c:\programme\microsoft visual studio\vc98\include\vector(60) : warning C4786: 'std::reverse_iterator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > *,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::vecto
r<CSherlockDlg::data,std::allocatorCSherlockDlg::data > &,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > *,int>' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
c:\programme\microsoft visual studio\vc98\include\vector(58) : Bei der Kompilierung der Member-Funktion '__thiscall std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data
,std::allocatorCSherlockDlg::data > > >::~std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >(void)' der Klassenvorlage
SherlockDlg.cpp
c:\programme\microsoft visual studio\vc98\include\vector(39) : warning C4786: 'std::reverse_iterator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > const *,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std:
:vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > const &,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > const *,int>' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
c:\programme\microsoft visual studio\vc98\include\vector(39) : Bei der Kompilierung der Member-Funktion '__thiscall std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data
,std::allocatorCSherlockDlg::data > > >::std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >(const std::allocator<std::vector<CSherl
ockDlg::data,std::allocatorCSherlockDlg::data > > &)' der Klassenvorlage
c:\programme\microsoft visual studio\vc98\include\vector(39) : warning C4786: 'std::reverse_iterator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > *,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::vecto
r<CSherlockDlg::data,std::allocatorCSherlockDlg::data > &,std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > *,int>' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
c:\programme\microsoft visual studio\vc98\include\vector(39) : Bei der Kompilierung der Member-Funktion '__thiscall std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data
,std::allocatorCSherlockDlg::data > > >::std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >(const std::allocator<std::vector<CSherl
ockDlg::data,std::allocatorCSherlockDlg::data > > &)' der Klassenvorlage
Generieren von Code...
c:\programme\microsoft visual studio\vc98\include\vector(39) : warning C4786: 'std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >::ve
ctor<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen verkürzt
c:\programme\microsoft visual studio\vc98\include\vector(60) : warning C4786: 'std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >::~v
ector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen verkürzt
c:\programme\microsoft visual studio\vc98\include\vector(60) : warning C4786: 'std::vector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >::~v
ector<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data >,std::allocator<std::vector<CSherlockDlg::data,std::allocatorCSherlockDlg::data > > >' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen verkürzt
Linker-Vorgang läuft...Sherlock.exe - 0 Fehler, 9 Warnung(en)
--
Kann mir das jemand erklären bzw. sagen, wie ich die Warnung wegbekomme?
-
Die Warnungen kann man nur per
#pragma warning(disable:4786)
ignorieren.
-
Aber warum taucht die Warnung auf?
-
Und warum werden in einer MFC-Anwendung nicht die Rutinen und Operatoren des Vectors angezeigt, wenn man diesen global definiert hat?
ich meine:
vector1[0].push_back ... Nachdem man den . (Punkt) drückt, erscheint doch sonst ein Kästchen, wo alle Rutinen etc. drinstehen.
Grüße,
Michael
-
IntelliSense funktioniert nicht zuverlässig. Wenn du das zuverlässig haben willst musst du dir Visual Assist X kaufen.
-
Kay, thx
-
Zu beiden Fragen (doofe Warnung und IntelliSense Versagen): weil du immer noch Visual C++ 6 verwendest.
Die Warnung kannst du im übrigen getrost ignorieren, die besagt nur dass der Name in der Debug-Info "beschnitten" werden, weil VC 6 zu doof ist lange Namen in der Debug-Info zu speichern. Keine Ahnung wieso - vielleicht haben sich die auch nur gedacht "255 Zeichen reicht eh locker"...
Und das #pragma warning(disable:4786) sollte am besten ganz am Anfang des Programmes stehen, also falls du Precompiled-Headers verwendest auch ganz oben in der "stdafx.h". Sonst funktioniert es nämlich nicht. Frag mich aber bloss nicht wieso...
-
#pragma warning( disable : 4786 )
-
hustbaer schrieb:
Und das #pragma warning(disable:4786) sollte am besten ganz am Anfang des Programmes stehen, also falls du Precompiled-Headers verwendest auch ganz oben in der "stdafx.h". Sonst funktioniert es nämlich nicht. Frag mich aber bloss nicht wieso...
Der Präprozessor arbeitet zeilenorientiert, deshalb schaltet dieses #pragma die Warnungen von dem Punkt an aus, an dem es steht (bis zum Ende der Datei oder bis zum zugehörigen
#pragma warning(default:4786)). In Headern, die du vorher schon eingebunden hattest, kommt die Warnung trotzdem vor.Zum Sinn DIESER Warnung: Der Debugger von VC kann keine unbegrenzt langen Bezeichner lesen, deshalb werden diese entsprechend abgeschnitten (zusammen mit einem Hinweis für den Programmierer). Und gerade in der STL kann da einiges zusammenkommen, wenn die typedefs und Default-Parameter für die STL-Klassen aufgelöst werden.