Hallo, als Hausarbeit soll ich eine Software schreiben und die verwendeten Standards angeben. Die Compilerversion habe ich schon herausgefunden. Nun fehlt mir noch die verwendete C++-Version. Gibt es unter Linux einen Befehl, der mir sagt, welches C++ von g++ verwendet wird? Falls noch weitere Infos benötigt werden bitte einfach posten!
Der Compiler selbst wird mehrere Standards unterstützen. Du musst entscheiden wie du programmieren willst. Z.B. mit dem "-std=c++11"-Flag wählst du die Unterstützung für den C++11-Standard.
Schon mal vielen Dank für die Antwort! zitter_ned_aso schrieb: > Der Compiler selbst wird mehrere Standards unterstützen. Du musst > entscheiden wie du programmieren willst. Wird dann standardmäßig ein bestimmter Standard verwendet und kann man diesen herausfinden? Ich kompiliere bspw einfach mit
1 | g++ test.cpp -lode -ldrawstuff -lGL -lGLU -lglut -lpthread -lX11 |
Schau einfach mal via
1 | man g++ |
iim Abschnitt -std= nach. Da findest welcher Standart der Default ist, z.B.:
1 | gnu11 |
2 | gnu1x |
3 | GNU dialect of ISO C11. The name gnu1x is deprecated. |
4 | |
5 | gnu17 |
6 | gnu18 |
7 | GNU dialect of ISO C17. This is the default for C code. |
8 | |
9 | c++98 |
10 | c++03 |
11 | The 1998 ISO C++ standard plus the 2003 technical corrigendum and some additional defect reports. Same as -ansi for C++ code. |
:
Bearbeitet durch User
1) Makrowert von __cplusplus anzeigen lassen
1 | std::cout << __cplusplus << std::endl; |
Quelle: https://stackoverflow.com/questions/46980383/how-to-determine-what-c-standard-is-the-default-for-a-c-compiler 2) Dann kannst du hier prüfen für welchen Standard diese Zahl steht:
1 | ...the value of the macro is 199711L for the 1998 C++ standard, 201103L for the 2011 C++ standard, 201402L for the 2014 C++ standard, 201703L for the 2017 C++ standard, or an unspecified value strictly larger than 201703L for the experimental languages enabled by -std=c++2a and -std=gnu++2a. |
Quelle: http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html ( Punkt 0): Lernen google zu benutzen ;-) )
Das __cplusplus Macro kann man auch direkt abfragen: g++ -dM -E -x c++ /dev/null | grep -F __cplusplus Quelle: https://stackoverflow.com/questions/44734397/which-c-standard-is-the-default-when-compiling-with-g
Den gnuXX kram betrachte ich übrigens nicht als Standards, die c++XX und cXX aber schon, die richten sich nämlich offiziellen Standards.
@DPA Wie gehst du vor, wenn du Mathe-Konstanten (PI, etc) brauchst? Bei "-std=gnu..." sind solche Zahlen ja dabei. Gibt es da eine elegante Lösung für dieses Problem? (außer alles selbst zu definieren)
zitter_ned_aso schrieb: > @DPA > > Wie gehst du vor, wenn du Mathe-Konstanten (PI, etc) brauchst? Bei > "-std=gnu..." sind solche Zahlen ja dabei. > > Gibt es da eine elegante Lösung für dieses Problem? (außer alles selbst > zu definieren) Was brauchst Du denn an Konstanten? #include <math.h> const double m_pi=4*atan(1); const double m_e=exp(1); fchk
Frank K. schrieb: > const double m_pi=4*atan(1); > const double m_e=exp(1); Ja, das sieht gut aus. Danke!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.