2013-08-21 2 views
13

Ich finde es ruhig nervig, dass ich das Makro _USE_MATH_DEFINES verwenden muss, um den Wert von Pi in mein Programm zu bekommen. Oder ich muss es selbst in einem meiner Header definieren. Oder ich muss Boost und all das benutzen.Warum gibt es keine Definition der Konstante pi im C++ 11-Standard?

Es ärgert mich nur, dass es keinen Standard-C++ - Header gibt, der diese Konstante in einer tragbaren Weise definiert. Gibt es einen bestimmten Grund, dass mathematische Konstanten wie Pi nicht im C++ - Standard sind? Könnte es in einer der nächsten Versionen des Standards sein?

+2

es ist nervig aber erforderlich. Fügen Sie '_USE_MATH_DEFINES' einfach in die Compiler-Option ein, damit Sie vermeiden können, sie aus der Kopfzeile hinzuzufügen. Dies ist die beste Lösung, die ich vorschlagen kann –

+2

Es gibt immer [boost] (http://www.boost.org/doc/libs/release/libs/math/doc/html/math_toolkit/constants.html) – Cubbi

+2

Mit Ausnahme der Makro ist '_XOPEN_SOURCE' (welches als 700 definiert werden muss), und die Konstante ist' M_PI'. (Was an sich das stärkste Argument für die Standardisierung ist.) –

Antwort

-5

Ich würde annehmen, es ist nicht standardisiert, weil es nicht wirklich ein Hauptanliegen ist. Ich sehe wirklich keinen Ärger darin, einfach eine #define- oder const-Statistik aufzuschreiben oder einfach eine Kopfzeile mit einer Reihe von mathematischen Konstanten zu erstellen, die Sie vielleicht brauchen. Es ist nicht wirklich etwas, das irgendjemand, der den Standard verfasst, in seinem Kopf hat, während er versucht, die Sprache zu verbessern.

+11

Sicher ist es schlecht, es selbst zu programmieren, weil es sich ändern kann ... – BoBTFish

+1

@BoBTFish Eine mögliche Methode, Fehler zu vermeiden, ist 'double pi = 4 * std :: atan (1.0);' – ilent2

+11

@BoBTFish Ich würde wahnsinnige Geldsummen darauf wetten, dass sich der Wert der mathematischen Konstante 'π' nicht bald ändern wird ;-) – dasblinkenlight

Verwandte Themen