Utilisation de M_PI

Utilisation de M_PI

par Julius Emile Girardin,
Number of replies: 9

Bonjour, je n'arrive pas a utiliser pi dans un programme c++, même pour le programme simple suivant:

#define _USE_MATH_DEFINES

#include <cmath>

#include <iostream>

int main(){

std::cout<<M_PI;

return 0;

}

Le compilateur me dit: "test.cc:6:13: error: 'M_PI' was not declared in this scope".

J'ai essayé de changer l'ordre des include, include math.h à la place de cmath, rien ne marche... Serait-ce un problème au niveau de l'installation de mon compilateur? (Je suis sous Windows et j'utilise Geany )


Merci d'avance



In reply to Julius Emile Girardin

Utilisation de M_PI

par Raffaele Ancarola,
T'as quel compilateur sur geany?
Je parle de la commande de compilation dans les build settings
In reply to Raffaele Ancarola

Re: Utilisation de M_PI

par Julius Emile Girardin,
In reply to Julius Emile Girardin

Re: Utilisation de M_PI

par Jean-Cédric Chappelier,

c'est la commande du compilateur que l'on voudrait (le fichier que vous avez écrit compile normalement très bien).

In reply to Jean-Cédric Chappelier

Re: Utilisation de M_PI

par Julius Emile Girardin,
Ah, pour compile: C:\TDM-GCC-32\bin\g++  -Wall -g -c "%f" -std=c++11
et pour build: C:\TDM-GCC-32\bin\g++  -Wall -g -o "%e" "%f" -std=c++11
In reply to Julius Emile Girardin

Re: Utilisation de M_PI

par Raffaele Ancarola,

T'as plusieurs possibilté:

  • Regarde dans C:\TDM-GCC-32\include\cmath.h (ou ton default include directory) si M_PI c'est definie de quelque part (utilise un util de find/replace une fois que t'as ouvert le fichier e regarde), puis
  1. si tu le trouve, poste ici toutes le ifdef ou ifndef où M_PI est dedant e on va verifier ce qu'il faut pour acceder à cette variable
  2. si tu ne le trouve pas, tu peut le definir à l'interieur du bloc #if defined( _USE_MATH_DEFINES) dans cmath.h

  3. #define M_PI 3.141592654
  4. similairement à comment il est specifié ici https://www.cplusplus.com/forum/general/102410/
  • Sinon tu peut la definir comme constante du projet si il n'y a pas de solution
  • Autrement utiliser l'include path de VisualC++ et ça on fait par en ajoutant
-I C:\otherincludepath

dans la commande de compilation.

Regarde quelle est la solution plus simple pour toi, in extremis la deuxième marche toujours.

In reply to Julius Emile Girardin

Re: Utilisation de M_PI

par Deleted user,

Ce problème est aussi mentionné par un autre utilisateur: https://github.com/tek-nishi/ThirdRayTrace/issues/1
Il suggère d'ajouter le flag "-std=gnu++11" à la place de "-std=c++11" à la compilation.
Cependant, cela pourrait rajouter des extensions GNU indésirables dans le cadre de ce projet...