2014-04-30 11 views
9

C'è un modo per disabilitare le funzionalità di C++ 11 quando si scrive codice in vs 2013, voglio che il mio codice compili anche su compilazioni più vecchie come vs2008.disabilita le funzioni di C++ 11 in vs2013

mi stanco di cambiare via: Progetto-> proprietà-> Generale-> piattaforma di tool-set, e cambiare "Visual Studio 2013 (V120)" a qualcosa di più antico, ma questa è l'unica cosa che ho in menu a discesa lì.

+0

Perché non semplicemente non usare alcuna 11 C++ (o più recente) caratteristiche? –

+7

im nuovo a C++, non posso dire per ogni funzionalità se è una funzione di C++ 11. – user3066442

+1

Allora potrei consigliare [un buon sito di riferimento] (http://en.cppreference.com/w/cpp)? Mostra chiaramente quali caratteristiche, classi e funzioni sono C++ 03, C++ 11 o C++ 14. Tuttavia, il modo migliore è utilizzare un vecchio (senza supporto C++ 11 o superiore) per compilare il programma. –

risposta

6

Se sono installate altre versioni di Visual Studio, è possibile selezionare il set di strumenti precedente. Questo può aiutare un po '.

Una soluzione migliore, IMHO, consiste nel configurare un server di integrazione continua che costruisca il codice per tutti i compilatori, le configurazioni e le piattaforme supportati. Otterrai quindi le interruzioni di build non appena fai qualcosa che non è supportato. Idealmente, il server CI esegue anche tutti i test delle unità, in modo da verificare anche se una qualsiasi delle tue configurazioni interrompe i test.

+0

Ho installato VS 2008 fianco a fianco con il 2013 e so che posso scegliere vs2008 dal menu a discesa. che ha aiutato – user3066442

0

Utilizzare un compilatore che consente di impostare lo standard utilizzato in modo esplicito (Clang e GCC consentono di scegliere la versione standard) o familiarizzare con le modifiche in C++ 11 in modo da poterle evitare nel codice.

Se è necessario un riferimento: http://en.cppreference.com/w/ I lati mostrano chiaramente in quale versione standard è stata introdotta una determinata funzione.

+11

È abbastanza facile utilizzare erroneamente le funzionalità di C++ 11 quando si prova a scrivere codice C++ 03. Ad esempio, uno std :: vector in C++ 03 richiede che gli elementi siano [Copy-Assignable] (http://en.cppreference.com/w/cpp/concept/CopyAssignable) e [Copy-Constructable] (http: //en.cppreference.com/w/cpp/concept/CopyConstructible), mentre C++ 11 rimuove tali restrizioni. Quindi, in alcuni casi, dire "evita le caratteristiche di C++ 11" è inutile come una dichiarazione come "evitare di scrivere bug". – JDiMatteo

8

Non è possibile.

Purtroppo non è possibile disabilitare le funzionalità di C++ 11 e eseguire il downgrade a C++ 03 o C++ 98 in Visual Studio. Puoi vedere quali caratteristiche appartengono a C++ 11 here e here, prova a non usarle.

Tuttavia, una scelta migliore è quella di utilizzare versioni VS meno recenti per assicurarsi di non utilizzare alcuna nuova funzione.

Personalmente, io uso MinGW/GCC in Windows e posso disabilitare C++ 11 usando un interruttore compilatore -std=c++03, -std=c++98 o non utilizzo -std=c++11.

0

Configurare Visual Studio per utilizzare un compilatore diverso che non supporta le funzionalità di C++ 11. Intellisense mostrerà ancora C++ 11 caratteristiche, ma si può prendere i problemi su una compilazione locale prima del check-in

How to use GCC with Microsoft Visual Studio?

1

Visual Studio 2015 Update 3 introduce due nuovi switch (/ std:. C++ 14 e/std: C++ latest) per darti il ​​controllo sulla versione del linguaggio di programmazione C++ che vuoi usare nei tuoi progetti. In questo aggiornamento, se si specifica una versione linguistica che non è nessuna di quelle, il compilatore ignorerà lo switch (con un avviso) e verrà impostato su C++ 14.

vedere https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/

Problemi correlati