2013-05-09 5 views
5

Mam trochę kodu napisanego przy użyciu standardów C++ 11, a nasza wersja g ++ to 4.4.6, więc o ile mogę powiedzieć, C++ 11 powinno być wspierane (począwszy od wersji 4.3).-std = C++ 11 flag nierozpoznana w G 4.4.6

Jednak po próbuje skompilować z flagami "-std = C++ 11 -std = gnu ++ 11", mam powtórzenia błędów

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

kompilacji z -std = C++ 0x produkuje błędy takie jak

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

odpowiadającego tej linii kodu:

for (cl::Platform& plat : platforms) 

Czy to C++ 11 specyficzny nieco składni ? (To nie wygląda to dla mnie, ale cały ten kod został podany jako przykład tak powinien działać zgodnie z kompilatora.

pomocy?

+4

Będziesz potrzebował GCC> = 4.7, aby uzyskać flagę 'C++ 11'. 4.4 jest za stary, nie uzyskasz wartości bazującej na AFAIK, nawet z '-std = C++ 0x'. Proszę przynajmniej przeczytać stronę podręcznika kompilatora, opcje, które obsługuje, są tam wymienione. – Mat

Odpowiedz

10

-std=c++11 ustawienie jest wspierany przez wiele późniejszych wersjach GCC. początkowe wsparcie dla powstającego C++ 11 została włączona -std=c++0x otoczeniu. to jest chyba to, co powinieneś spróbować.

I tak, składnia for próbujesz użyć jest głównie C++ 11 składnia.

+0

Pozdrawiam za szybką pomoc :) – Joe

+0

Byłbym wdzięczny za udostępnienie łącza źródłowego. –

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

tak, jest to określone użycie C++ 11. GCC 4.7 lub nowszy obsługuje C++ 11 z opcją -std = C++ 11 w międzyczasie.

3

Wygląda na to, że pętle oparte na odległościach są obsługiwane w wersjach 4.6 i nowszych.

This page pokazuje obsługę GCC dla funkcji C++ 11.