Fehlermeldung des GNU-CC-Compilers: error: unrecognized command line option '-std=gnu++20'; did you mean '-std=gnu++2a'?



  • Hallo C++ - Freunde!

    Um ein C++ - Projekt zu compilieren und vor allem zu debuggen, installierte ich unter Windows 10 "Code::Blocks 20.03" und auch den MinGW-Installer. Nachdem ich unter die Global Compiler Settings den Pfad zu MinGW änderte, das immer noch nicht compilierte und dann unter den Compiler-Flags in den General Settings den Sprachstandard zu "C++ 20 GNU C" oder "20 ISO C++" änderte (ich weiß es leider nicht mehr genau), compilierte es endlich, und ich konnte das Projekt auch debuggen.

    Wegen eines Computerneustartes mußte ich auch Code::Blocks neu starten und fiel danach vom Glauben ab. Um es kurz zu fassen: Ich bekomme die Compilierbarkeit per "Build" nicht mehr hin. Es scheitert an der Fehlermeldung:

    "error: unrecognized command line option '-std=gnu++20'; did you mean '-std=gnu++2a'?"

    Meine Recherche im Internet half mir leider nicht weiter:

    https://stackoverflow.com/questions/62765715/error-unrecognized-command-line-option-std-gnu20-did-you-mean-std-gnu

    1. Wenn ich bei General gar nichts selektiere, compiliert es erst recht nicht. Ich benötige den 20-Standard.
    2. Unter "Other Compiler Options" steht bei mir gar nichts, also gibt es dort auch nichts zu ändern. Auch das Eintragen des im zweiten Teil der Fehlermeldung gewünschten Ausdruckes bringt keine Compilierbarkeit.

    Wenn ich

    https://forums.codeblocks.org/index.php?topic=24079.0

    recht verstehe, benötige ich den C++Compiler der Version 20. Doch meine installierte Datei mingw32-c++.exe hat den Datumsstempel 20.07.2020.

    Ich weiß leider nicht mehr weiter.

    Vielen Dank für die Aufmerksamkeit und Mühe.

    Freundlicher Gruß

    C-Laie



  • Daß mir hier spontan niemand half, spricht Bände über die Komplexität dieser Software.

    So, Fehler wohl gefunden: In den "Global compiler settings" sowohl bei "C++ 20 GNU C++" - Standard als auch bei "C++ 20 ISO C++" - Standard habe ich nach Rechtsklick und "Modify Flag" und dann im zweiten Editfeld namens "Compiler flags" den Eintrag "-std=c++20" zu "-std=c++2a" geändert. Das habe ich beim ersten Male, als es nur mit dem Einschalten einer der beiden Compileroptionen getan war (s. meinen vorherigen Beitrage), definitv nicht getan.

    Ist mir auch völlig unklar, warum man erst an einer solchen Aufrufoption herumbasteln muß und wieso es zuerst klappte und beim zweiten Male erst nach stundenlangem Suchen und Probieren (fragile Software). Schlimm, mit was einem Computer so alles die Zeit rauben. Die Antworten, die ich auf die gleiche Problembeschreibung im Internet fand (s. Beitrag oben), zeigen mir auch, daß auch die Antworter eher rätseln und ahnen statt zu wissen.



  • Ich weiß nicht, ob hier jemand Code::Blocks mit mingw benutzt. Ich z.B. nicht, daher sind solche spezifischen Fragen oft nicht leicht zu beantworten.

    Jedenfalls: du brauchst nicht "den C++Compiler der Version 20", sondern einen C++-Compiler, der den Sprachstandard "C++ 20" unterstützt.

    Bei gcc zum Beispiel findest du hier die Übersicht, welcher C++-Standard von welcher gcc-Version unterstützt wird: https://gcc.gnu.org/projects/cxx-status.html

    Generell heißen die Optionen in älteren Versionen immer c++0x, c++1y, 1z, 2a, 2b für C++11, 14, 17, 20 und vermutlich 23, BEVOR diese Standards vollständig waren. An 0x siehst du gut, dass C++11 eigentlich vor 2010 rauskommen sollte - und einige Features waren halt schon im Compiler drin. Wenn dein Compiler nur 2a statt 20 kennt, hat er vermutlich noch keinen vollständigen C++20-Support (weil der Standard noch in Entwicklung war). Es kann aber natürlich trotzdem sein, dass die Features, die dein Projekt braucht, schon drin sind.



  • Vielen Dank, wob!



  • @C-Laie-0 sagte in Fehlermeldung des GNU-CC-Compilers: error: unrecognized command line option '-std=gnu++20'; did you mean '-std=gnu++2a'?:

    Wenn ich

    https://forums.codeblocks.org/index.php?topic=24079.0

    recht verstehe, benötige ich den C++Compiler der Version 20. Doch meine installierte Datei mingw32-c++.exe hat den Datumsstempel 20.07.2020.

    Tip: Wenn du die GCC-Version herausfinden willst, geht das indem du die .exe des Compilers mit der Option -dumpversion in der Kommandozeile aufrufst. Also in deinem Fall:

    > mingw32-c++ -dumpversion
    

    mingw32-c++.exe ist zumindest bei den GCC-Toolchains, die ich verwende ein wenig unorthodox, die können mitunter schonmal auch auf -g++ enden oder ein anderes Präfix haben wie z.B. x86_64-w64-mingw32-g++.exe, oder einfach nur g++.exe... falls du dich mal wundern solltest, wenn du irgendwann mal eine andere "Distribution" von MinGW+GCC verwendest.



  • Dir auch danke Finnegan!


Anmelden zum Antworten