
Bonandrin Carlo
Ich lerne gerade C++ und verwende Visual Studio Code für Mac. Ich verwende Code Runner, um mein Programm auszuführen. Mein Problem ist, dass, wenn ich etwas aus C++ 11 wie “auto” für die Variablendeklaration verwende, Visual Studio-Code mir eine Warnung wie diese gibt, aber wenn ich versuche, es auf Xcode oder Eclipse auszuführen, tut es das nicht:
warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
for(auto y: nstrVec)
Dies ist das Programm, wenn es notwendig ist:
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>
#include <numeric>
#include <sstream>
int main(){
std::vector<std::string> nstrVec(10);
std::string str("I'm a string");
nstrVec[0] = str;
std::cout << str.at(0) << "\n";
std::cout << str.front() << " " << str.back() << "\n";
std::cout << "Length " << str.length() << "\n";
// copies all characters after the fourth
std::string str2(str, 4);
for(auto y: nstrVec)
if(y != "")
std::cout << y << "\n";
return 0;
}
Und das ist die Datei c_cpp_proprerties.json:
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/System/Library/Frameworks/Kernel.framework/Versions/A/Headers"
],
"defines": [],
"macFrameworkPath": [
"/System/Library/Frameworks",
"/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}

iamzar
Im VS-Code:
Datei >> Einstellungen >> Einstellungen >> Erweiterungen
Finden Sie C_Cpp>Default:Cpp Standard Dropdown-Menü
setze das auf c++11


vic.zhang
Ich hatte das gleiche Problem, habe es aber mit set vscode-user-settings <> gelöst
"clang.cxxflags": ["-std=c++14"]


ljelliot
Ich habe heute so lange versucht herauszufinden, warum ich diesen Fehler bekomme, und nirgendwo hatte ich die genaue Antwort, die ich brauchte, also dachte ich, ich poste sie hier, nur für den Fall, dass ich jemandem den Ärger ersparen kann.
Wenn Sie Code Runner verwenden, sehen Sie in den Benutzereinstellungen nach und legen Sie Folgendes fest:
"code-runner.executorMap" : { "cpp" : "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt" }
Das relevante Bit ist “g++ -std=c++17”.
Dies setzt natürlich voraus, dass Sie Ihr Programm in der Shell mit Daniels Lösung oben kompilieren können, jedoch nicht in VScode + und mit Code Runner.

TimingTone
Ich habe dies verwendet, um mein Problem zu lösen. Öffnen Sie Ihr Terminal
bash
echo "alias g++='g++ -std=c++17'" >> ~/.bashrc
source ~/.bashrc
zsch
echo "alias g++='g++ -std=c++17'" >> ~/.zshrc
source ~/.zshrc
Für alle, die auf diese Frage kommen, um eine schnelle Antwort zu finden (so wie ich):
Der folgende Compiler-Befehl sollte Ihr Programm kompilieren main.cpp
mit dem neuesten C++-Standard (c++17) und sollte Warnmeldungen wie die oben beschriebene loswerden:
g++ -std=c++17 -g main.cpp -o main
Es wird in den Kommentaren mehrfach erwähnt, aber ich denke, diese Frage sollte regelmäßig beantwortet werden.

SHASHANK BHARDWAJ
Wenn Sie die CPH Judge-Erweiterung in VS add -std=c++11 in Cph › Language › Cpp: Args in den Erweiterungseinstellungen

Jatin Ranpariya
Wir müssen nur den g++ Compiler mit dem g++-11 Compiler verknüpfen. Unten ist der Prozess, wie man es auf einem Macbook macht.
Zur Lösung klicken Sie hier
Wenn dies nicht funktioniert, sehen Sie sich dieses Video an: https://youtu.be/CZ7Mf7qxbIU
10128800cookie-checkVisual Studio Code c++11-Erweiterungswarnungyes
Kompilieren Sie für C++11? Es klingt nicht danach. Das
auto
Das Schlüsselwort wurde in C++11 eingeführt, sodass es von Visual Studio als Spracherweiterung betrachtet wurde.– Cory Kramer
26. Juni 2018 um 15:46 Uhr
@CoryKramer Die Frage bezieht sich auf VS Code, nicht auf VS.
– Benutzer2100815
26. Juni 2018 um 15:47 Uhr
Sie weisen den Compiler an, zwei verschiedene Standards zu verwenden: Sie haben sowohl “-std=c++17” als auch “-std=c++11”.
– Fabio sagt, Monica wieder einzusetzen
26. Juni 2018 um 15:47 Uhr
Kannst du es über die Kommandozeile kompilieren? Das heißt, öffnen Sie eine Shell, gehen Sie in dieses Verzeichnis und geben Sie ein
g++ -std=c++17 -g helloworld.cpp -o helloworld
: funktioniert es?– Fabio sagt, Monica wieder einzusetzen
26. Juni 2018 um 16:14 Uhr
Ich freue mich, dass Sie Ihr Problem lösen konnten, aber bitte bearbeiten Sie Ihren Beitrag nicht, um “GELÖST” im Titel hinzuzufügen, Stack Overflow funktioniert anders. Der richtige Weg, dies anzuzeigen, besteht darin, eine Antwort zu akzeptieren, sobald es eine gibt. Du könntest @Bob__ fragen, ob er daran interessiert ist, einen zu posten; wenn er es nicht ist, poste es bitte selbst und akzeptiere es. Danke!
– Fabio sagt, Monica wieder einzusetzen
26. Juni 2018 um 22:10 Uhr