2014-04-30 11 views
9

Gibt es eine Möglichkeit, C++ 11 Funktionen zu deaktivieren, wenn Code in vs 2013 schreiben, möchte ich meinen Code auch auf älteren Compiles wie vs2008 kompilieren.disable C++ 11 Funktionen in vs2013

ich müde über ändern: Ausbau-> Einstellungen-> Allgemein-> Plattform Tool-Set und „Visual Studio 2013 (v120)“ ändern etwas älter, aber das ist das einzige, was ich in der habe Dropdown-Menü dort.

+0

Warum nicht einfach keine C++ 11 (oder höher) verwenden Funktionen? –

+7

Ich bin neu in C++, ich kann nicht für jedes Feature sagen, wenn es eine C++ 11-Funktion ist. – user3066442

+1

Dann kann ich [eine gute Referenzseite] empfehlen (http://en.cppreference.com/w/cpp)? Es zeigt deutlich, welche Features und Klassen und Funktionen C++ 03, C++ 11 oder C++ 14 sind. Der beste Weg ist jedoch, ein älteres Programm (ohne C++ 11 oder höher) zu verwenden, um das Programm zu kompilieren. –

Antwort

6

Wenn Sie andere Versionen von Visual Studio installiert haben, können Sie den älteren Werkzeugsatz auswählen. Dies kann ein wenig helfen.

Eine bessere Lösung, IMHO, besteht darin, einen Continuous Integration Server einzurichten, der Ihren Code für alle unterstützten Compiler, Konfigurationen und Plattformen erstellt. Sie erhalten dann Build-Breaks, sobald Sie etwas tun, das nicht unterstützt wird. Idealerweise führt der CI-Server auch alle Komponententests durch, damit Sie auch sehen, ob eine Ihrer Konfigurationen Ihre Tests durchbricht.

+0

Ich installiert VS 2008 Seite an Seite mit vs 2013, und weiß, ich kann vs2008 aus dem Dropdown wählen. das half – user3066442

0

Verwenden Sie entweder einen Compiler, mit dem Sie den verwendeten Standard explizit festlegen können (Clang und GCC können die Standardversion wählen), oder machen Sie sich mit den Änderungen in C++ 11 vertraut, damit Sie sie in Ihrem Code vermeiden können.

Wenn Sie eine Referenz benötigen: http://en.cppreference.com/w/ Die Seiten zeigen deutlich, in welcher Standardversion eine bestimmte Funktion eingeführt wurde.

+11

Es ist ziemlich einfach versehentlich C++ 11 Funktionen zu verwenden, wenn Sie versuchen, C++ 03-Code zu schreiben. Zum Beispiel erfordert ein std :: vector in C++ 03, dass Elemente [Copy-Assignable] (http://en.cppreference.com/w/cpp/concept/CopyAssignable) und [Copy-Constructable] (http: //en.cppreference.com/w/cpp/concept/CopyConstructible), während C++ 11 diese Einschränkungen entfernt. In einigen Fällen ist das Aussprechen von "C++ 11-Features vermeiden" genauso nutzlos wie die Aussage "Vermeiden Sie, Fehler zu schreiben". – JDiMatteo

8

Sie können nicht.

Leider können Sie C++ 11-Funktionen nicht deaktivieren und in Visual Studio auf C++ 03 oder C++ 98 herunterstufen. Sie können sehen, welche Funktionen zu C++ 11 here und here gehören, versuchen Sie nicht, sie zu verwenden.

Eine bessere Wahl ist jedoch die Verwendung älterer VS-Versionen, um sicherzustellen, dass Sie keine neuen Funktionen verwenden.

Persönlich benutze ich MinGW/GCC in Windows und ich kann mit einem Compiler-Schalter -std=c++03, -std=c++98 oder nicht mit -std=c++11 C 11 ++ deaktivieren.

0

Konfigurieren Sie Visual Studio, um einen anderen Compiler zu verwenden, der C++ 11-Funktionen nicht unterstützt. Intellisense zeigt noch ++ 11 Funktionen C, aber Sie können Probleme auf einem lokalen Kompilierung zu fangen, bevor die Überprüfung es in

How to use GCC with Microsoft Visual Studio?

1

Visual Studio 2015 Update 3 stellt zwei neue Schalter (/ std. C++ 14 und (/ std: C++), um Ihnen die Kontrolle über die Version der Programmiersprache C++ zu geben, die Sie in Ihren Projekten verwenden möchten. Wenn Sie in diesem Update eine Sprachversion angeben, die keine davon ist, ignoriert der Compiler den Schalter (mit einer Warnung) und standardmäßig C++ 14.

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