3 Stimmen

G++ 4.4 Kompilierfehler, niedrigere Versionen funktionieren

Ich habe mein Programm in C++ geschrieben und es kann erfolgreich auf Ubuntu 9.04 mit g++ 4.3.4 und Solaris OS mit g++ 3.4.3 kompiliert werden. Jetzt habe ich mein Ubuntu auf Version 9.10 und g++ auf Version 4.4.1 aktualisiert. Jetzt ruft der Compiler den Fehler in STL auf.

/usr/include/c++/4.4/bits/stl_deque.h: In member function ‘void std::deque<_Tp, _Alloc>::swap(std::deque<_Tp, _Alloc>&)’:
In file included from /usr/include/c++/4.4/deque:65,
/usr/include/c++/4.4/bits/stl_deque.h:1404: error: ‘swap’ is not a member of ‘std’
/usr/include/c++/4.4/bits/stl_deque.h:1405: error: ‘swap’ is not a member of ‘std’
/usr/include/c++/4.4/bits/stl_deque.h:1406: error: ‘swap’ is not a member of ‘std’
/usr/include/c++/4.4/bits/stl_deque.h:1407: error: ‘swap’ is not a member of ‘std’

Ich weiß nicht, wie ich das Problem beheben kann und ob es möglich ist, dass stl einen Fehler enthält. Können Sie mir helfen, bitte?

Vielen Dank für alle Ratschläge.

8voto

Ignacio Vazquez-Abrams Punkte 735200
#include <algorithm>

2voto

palm3D Punkte 7549

In älteren Versionen von GCC, wenn Sie eine Standardbibliothek Header enthalten, würde dieser Header in der Regel viele andere enthalten. Wie bereits von anderen erwähnt, ist in Ihrem Fall <algorithm> wurde auf diese Weise aufgenommen.

Dieses Verhalten wird von der Norm nicht gefordert. Viele andere Implementierungen der Standardbibliothek weisen dieses Verhalten nicht oder in geringerem Maße auf. Es war einfach eine Designentscheidung, die von den GCC-Entwicklern vor langer Zeit getroffen wurde. Es scheint, dass sie dieses Verhalten jetzt reduzieren, um es mehr mit anderen Implementierungen in Einklang zu bringen. Das gibt Ihnen mehr Kontrolle darüber, was eingebunden wird und was nicht. Alter Code wird brechen, aber es ist leicht zu beheben, indem man die fehlenden Header einfügt.

0voto

Andy Shellam Punkte 14907

Ein Beitrag in einem Apple-Forum schlägt vor

#include <algorithm>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X