2013-05-09 26 views
5

Ich habe Code geschrieben mit den C++ 11 Standards, und unsere g ++ Version ist 4.4.6, so weit ich das sagen kann, C++ 11 sollte unterstützt werden (ab 4.3).-std = C++ 11 Flag nicht erkannt in G 4.4.6

jedoch beim Versuch mit den Flaggen "-std = C++ 11 -std = Gnu ++ 11" zu kompilieren, erhalte ich Wiederholungen der Fehler

cc1plus: error: unrecognized command line option "-std=c++11" 
cc1plus: error: unrecognized command line option "-std=gnu++11" 

Kompilieren mit -std = C++ 0x erzeugt Fehler wie

DeviceInfo.cpp:22: error: expected initializer before ‘:’ token 

diese Codezeile entsprechen:

for (cl::Platform& plat : platforms) 

Ist das ein C++ 11 spezifische Bits von Syntax ? (Es sieht nicht wie es mir, aber alle dieser Code gegeben wurde, als ein Beispiel, so sollte mit dem Compiler bereitgestellt arbeiten.

Jede Hilfe?

+4

Sie benötigen GCC> = 4.7, um das Flag "C++ 11" zu erhalten. 4.4 ist zu alt, Sie werden den Bereich nicht für AFAIK bekommen, auch nicht mit -std = C++ 0x. Bitte lesen Sie zumindest die Manpage für den Compiler, dort sind die unterstützten Optionen aufgelistet. – Mat

Antwort

10

-std=c++11 Einstellung unterstützt wird durch viel höhere Versionen von GCC. die anfängliche Unterstützung für im Entstehen begriffene C++ 11 durch -std=c++0x Einstellung aktiviert wurde. Dies ist wahrscheinlich das, was Sie sollten versuchen.

Und ja, die for Syntax Sie versuchen, verwenden hauptsächlich C++ 11-Syntax.

+0

Prost für die schnelle Hilfe :) – Joe

+0

Ich würde mich freuen, wenn ein Quelllink auch geteilt wird. –

0
for (cl::Platform& plat : platforms) 

ja, es ist C++ 11 spezifische Verwendung. GCC 4.7 oder höher unterstützt C++ 11 mit der Option -std = C++ 11.

3

Es scheint, als ob bereichsbasierte for-Schleifen ab 4.6 unterstützt werden.

This page zeigt GCC-Unterstützung für C++ 11-Funktionen.

Verwandte Themen