2013-08-21 11 views
13

Uważam, że jest to dość denerwujące, że muszę użyć makra _USE_MATH_DEFINES, aby uzyskać wartość pi w moim programie. Albo muszę zdefiniować to sam w jednym z moich nagłówków. Albo muszę użyć wzmocnienia i tak dalej.Dlaczego nie ma definicji stałej pi w standardzie C++ 11?

Po prostu denerwuje mnie, że nie ma standardowego nagłówka C++ określającego tę stałą w sposób przenośny. Czy istnieje jakiś szczególny powód, że stałe matematyczne takie jak pi nie są w standardzie C++? Czy może być w jednej z kolejnych wersji standardu?

+2

Jest denerwujące, ale wymagane. Po prostu dodaj '_USE_MATH_DEFINES' do opcji kompilatora, aby uniknąć dodania jej z nagłówka. To jest najlepsze rozwiązanie, które mogę zasugerować –

+2

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

+2

Z tym, że makro to '_XOPEN_SOURCE' (które musi być zdefiniowane jako 700), a stała to' M_PI'. (Co samo w sobie jest najmocniejszym argumentem przemawiającym za standaryzacją.) –

Odpowiedz

-5

Założę się, że nie jest znormalizowany, ponieważ nie jest tak naprawdę poważnym problemem. Naprawdę nie widzę żadnych kłopotów w zapisywaniu #define lub const static, lub po prostu tworzeniu nagłówka z wiązką stałych matematycznych, których możesz potrzebować. Nie jest to naprawdę coś, co każdy, kto komponuje standard, ma na myśli, próbując poprawić język.

+11

Z pewnością trudno jest go zakodować samemu, ponieważ może się zmienić ... – BoBTFish

+1

@BoBTFish Jednym z możliwych sposobów uniknięcia błędów jest użycie 'double pi = 4 * std :: atan (1.0);' – ilent2

+11

@BoBTFish Założę się, że nieprzyjemne sumy pieniędzy, że wartość stałej matematycznej 'π' nie zmieni się w najbliższym czasie ;-) – dasblinkenlight

Powiązane problemy