Visual Studio Code c++11-Erweiterungswarnung

Lesezeit: 4 Minuten

Benutzer-Avatar
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
}

  • 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

Benutzer-Avatar
iamzar

Im VS-Code:

Datei >> Einstellungen >> Einstellungen >> Erweiterungen

Finden Sie C_Cpp>Default:Cpp Standard Dropdown-Menü

setze das auf c++11

Bild des Optionsfensters

  • Aber das löst mein Problem nicht. Es zeigt immer noch die gleiche Warnung

    – Alex

    22. Januar 2021 um 18:42 Uhr

  • Unter macOS ist dies Code > Einstellungen > Einstellungen > Erweiterungen

    – tedtaner

    11. Oktober 2021 um 17:51 Uhr

  • Dies löste mein Problem – musste nur vs Code neu starten und voila.

    – Jonas Butler

    3. Mai um 1:39 Uhr

Benutzer-Avatar
vic.zhang

Ich hatte das gleiche Problem, habe es aber mit set vscode-user-settings <> gelöst

"clang.cxxflags": ["-std=c++14"]

vscode- Benutzereinstellung

  • Wo finden Sie diese Datei?

    – Ridhuvarschan

    10. Dezember 2020 um 6:00 Uhr

Benutzer-Avatar
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.

Benutzer-Avatar
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.

Benutzer-Avatar
SHASHANK BHARDWAJ

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

Benutzer-Avatar
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

  • Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzufügen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert. – Aus Bewertung

    – Hypenieren

    30. April um 13:29 Uhr

1012880cookie-checkVisual Studio Code c++11-Erweiterungswarnung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy