2013-05-09 16 views
5

Ho un codice scritto usando gli standard C++ 11, e la nostra versione g ++ è 4.4.6, quindi per quanto posso dire, C++ 11 dovrebbe essere supportato (dalla 4.3 in poi).-std = C++ 11 flag non riconosciuto in G 4.4.6

Tuttavia al momento cercando di compilare con le bandiere "-std = C++ 11 -std = gnu ++ 11", ottengo ripetizioni degli errori

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

compilazione con -std = C++ 0x produce errori quali

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

corrispondente a questa linea di codice:

for (cl::Platform& plat : platforms) 

è questo un C++ 11 bit specifico della Sintassi ? (Che non sembra a me, ma tutto questo codice è stato dato a titolo di esempio in modo dovrebbe funzionare come previsto con il compilatore.

Qualsiasi aiuto?

+4

Avrai bisogno di GCC> = 4.7 per ottenere il flag 'C++ 11'. 4.4 è troppo vecchio, non si otterrà il range basato su AFAIK, anche con '-std = C++ 0x'. Per favore, leggi almeno la pagina man del compilatore, le opzioni che supporta sono elencate qui. – Mat

risposta

10

-std=c++11 impostazione è supportata dalle versioni successive di molto GCC. il supporto iniziale per nascente C++ 11 è stato abilitato per impostazione -std=c++0x. Questo è probabilmente ciò che si dovrebbe provare.

E sì, il for sintassi che si sta tentando di utilizzare è principalmente C++ 11 sintassi.

+0

Cheers per l'aiuto rapido :) – Joe

+0

Apprezzerei se anche un collegamento sorgente fosse condiviso. –

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

sì, è l'uso specifico di C++ 11. GCC 4.7 o versioni successive supporta C++ 11 con l'opzione -std = C++ 11 nel frattempo.

3

Sembra che i cicli basati su intervallo siano supportati in 4.6 e successivi.

This page mostra il supporto GCC per le caratteristiche di C++ 11.

Problemi correlati