[GCC] error: 'M_PI' was not declared in this scope
Ostatnio zmodyfikowano 2017-07-18 21:49
jankowalski25 Temat założony przez niniejszego użytkownika |
[GCC] error: 'M_PI' was not declared in this scope » 2012-01-10 20:35:21 Fragment biblioteki math.h (dołączonej do cmath):
#ifndef __STRICT_ANSI__
#define M_PI 3.14159265358979323846
#endif
Kod z dokumentacji:
#include <cstdio> #include <cmath>
int main() { printf( "Wartosc = %.10f", M_PI ); return 0; }
Występuje błąd:
error: 'M_PI' was not declared in this scope
Aby rozwiązać ten problem, wpisuję przed dołączeniem cmath:
#undef __STRICT_ANSI__
Czy powinno się tak pisać, aby korzystać ze stałych matematycznych?
Jeśli tak, to można tą informację umieścić w dokumentacji (są wskazówki do Visuala, ale nie do Code::Blocks'a).
Jeśli jest to zły sposób, to jak należy to robić? |
|
DejaVu |
» 2012-01-10 22:09:19 |
|
jankowalski25 Temat założony przez niniejszego użytkownika |
» 2012-01-11 06:27:01 A czemu używasz STRICT ANSI? |
Ponieważ tam znajduje się M_PI. Aby uaktywnić M_PI, __STRICT_ANSI__ musi być niezdefiniowane, dlatego próbuję usunąć tą definicję przez undef. Chyba jest automatycznie zdefiniowana przez kompilator, nie wiem, szukałem w bibliotece i nie znalazłem jej definicji, może jest w innej bibliotece? Jest jakiś lepszy sposób? Przeczytałem to, co było na tej stronie, ale nie znalazłem tam tego, czego trzeba. Skoro to zły sposób, to jak należy uaktywnić M_PI? |
|
DejaVu |
» 2012-01-11 13:07:42 Chyba jednak nie czytałeś tego linku co Ci podałem :) |
|
odkrywca |
» 2017-07-18 20:29:32 << Removed by DejaVu - załóż własny temat >> |
|
jankowalski25 Temat założony przez niniejszego użytkownika |
» 2017-07-18 21:49:55 Kompilowałem wtedy całość z flagą -ansi , aby rozwiązać problem wystarczyło ją usunąć (lub samodzielnie zdefiniować M_PI i inne rzeczy, które nie są "ściśle zgodne z ANSI", jeśli z jakiegoś powodu trzeba użyć tej flagi). |
|
« 1 » |