nullptr in MinGW
-
Ich hatte gelesen, das der neue C++-Standard ein Ersatz für
NULLbei Zeigern vorschlägt, nämlich
nullptr.
Vorteile werden u.a. hier aufgelistet: http://www.c-plusplus.net/forum/220511-full.
Ich benutze MinGW mit g++ in Version 4.6.2, und erhalte folgenden Fehler:error: 'nullptr' was not declared in this scope
.
Ich hatte eigentlich erfahren, dasnullptrab Version 4.6 untertützt wird. Der Kommandozeilencompiler von Visual-Studio 2010 Express kompiliert den Code ohne Probleme.
Ich habe keinerlei zusätzliche Bibliotheken eingebunden, liegt es eventuell daran?
-
Kompilierst du mit -std=c++11? PS: MinGW kennt doch schon Version 4.7?
-
Du musst die C++11 Sprachfeatures per Commandozeilenparameter aktivieren. In Version 4.6 war C++11 noch nicht ganz fertig, deswegen heißt es dabei noch C++0x verwendet. Du fügst bei den Compilerflags einfach -std=c++0x an, damit das funktioniert. Bei neueren gcc Versionen muss man -std=c++11 verwenden.
Warum aber auch bei neuen Versionen der alte Standart verwendet wird und man den neuen explizit angeben muss, würde mich auch mal interessieren. Bei den unfertigen Standarts C++0x kann ich das gut verstehen, aber eigentlich sollte man die alten doch allmählich verabschieden und nicht noch bevorzugen.
-
Man muss den Standard eh immer explizit angeben (zusammen mit -pedantic üblicherweise), weil der default nicht C++98 ist, sondern C++ mit ein paar GCC Spracherweiterungen etc.

Abgesehen davon werden die das bestimmt nicht ändern, weil dann viele makefiles kaputt gehen würde.
-
Danke für die Tipps, hat mit -std=c++0x funktioniert. Jetzt muss ich mir nur noch minGW updaten, was mich wundert, da die Installation etwa 5 Tage alt ist und ich mir bei SourceForge den neuesten Installer gesucht hatte.
-
Marthog schrieb:
Bei neueren gcc Versionen muss man -std=c++11 verwenden.
Muss man, oder wird
-std=c++0xweiterhin funktionieren? Ich habe dazu nichts Ausdrückliches gefunden.ch++ schrieb:
Jetzt muss ich mir nur noch minGW updaten, was mich wundert, da die Installation etwa 5 Tage alt ist und ich mir bei SourceForge den neuesten Installer gesucht hatte.
Sieht nicht so aus, als gäbe es eine neuere. Unter MinGW muss man sich wohl noch bis g++ 4.7 gedulden...
-
MinGW kennt definitiv Version 4.7
-
cooky451 hat recht. Bei der Installation muss nur "Download latest repository catalogues" auswählt werden oder man muss MinGW per mingw-get.exe aktualisieren.
Alternative: rubenvbs MinGW-w64-Builds verwenden:
http://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32/Personal Builds/rubenvb/
http://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win64/Personal Builds/rubenvb/
-
Der Tip mit „download latest repository catalogues“ ist gut.
Danke