Forum: Compiler & IDEs Verwendete C++-Version herausfinden


von ATN (Gast)


Lesenswert?

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!

von zitter_ned_aso (Gast)


Lesenswert?

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.

von ATN (Gast)


Lesenswert?

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

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

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
von zitter_ned_aso (Gast)


Lesenswert?

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 ;-) )

von Sven Brandau (Gast)


Lesenswert?

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

von DPA (Gast)


Lesenswert?

Den gnuXX kram betrachte ich übrigens nicht als Standards, die c++XX und 
cXX aber schon, die richten sich nämlich offiziellen Standards.

von zitter_ned_aso (Gast)


Lesenswert?

@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)

von Frank K. (fchk)


Lesenswert?

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

von zitter_ned_aso (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.