IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[linux][gcc]pb avec les constantes telles que M_PI


Sujet :

C

  1. #1
    Membre confirmé Avatar de jula
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2003
    Messages : 81
    Par défaut [linux][gcc]pb avec les constantes telles que M_PI
    Bonjour,
    j'ai récupéré du code fait sous HP UX-10.20 et compilé avec c89.
    Je dois le compiler sous Linux, avec gcc.
    Dans ce code, il y a certaines constantes, telles que M_PI qui sont utilisées.
    A chaque fois qu'on utilise ces constantes, on inclue le fichier qui les défénies, par exemple : pour utiliser M_PI.
    Mon problème est que même en ayant inclue ce fichier, le compilo me dit
    'M_PI' undeclared (first use in this function)
    ...
    Comme si le compilo n'avait pas pris en compte le fichier inclu. Ou alors, il me manque une option de compil?
    Est-ce que quelqu'un a une idée pour m'orienter dans mes recherches?
    Cordialement,
    Jula.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: [linux][gcc]pb avec les constantes telles que M_PI
    Citation Envoyé par jula
    j'ai récupéré du code fait sous HP UX-10.20 et compilé avec c89.
    Je dois le compiler sous Linux, avec gcc.
    Dans ce code, il y a certaines constantes, telles que M_PI qui sont utilisées.
    A chaque fois qu'on utilise ces constantes, on inclue le fichier qui les défénies, par exemple : pour utiliser M_PI.
    Mon problème est que même en ayant inclue ce fichier, le compilo me dit
    'M_PI' undeclared (first use in this function)
    ...
    C'est normal. M_PI ne fait pas partie du langage C. C'est une extension, donc non portable. Je recommande ceci :

    Création du fichier "pi.h"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /* pi.h */
    #ifndef M_PI
    #define M_PI 3.14159 /* ... */
    #endif
    Inclure ce fichier partout où c'est nécessaire.

  3. #3
    Membre confirmé Avatar de jula
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2003
    Messages : 81
    Par défaut
    c'est affreux !
    il n'y a pas que cette constante qui me pose problème, donc effectivement, je vais faire un fichier .h définissant toutes ces contantes et autres (par exemple la structure timezone?!)...
    merci pour la réponse (rapide en +)
    cordialement,
    jula.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par jula
    il n'y a pas que cette constante qui me pose problème, donc effectivement, je vais faire un fichier .h définissant toutes ces contantes et autres (par exemple la structure timezone?!)...
    Ben oui. Certains se croient malin en écrivant du code non portable... On voit le résultat..

    Evidemment, il y a des cas où ce n'est pas possible autrement, dans ce cas, il faut centraliser les éléments non portables pour faciliter le portage (pas de modif dans le code, jusque quelques headers à 'spécialiser' selon la cible...)

    Pour ça, il faut bien connaître la frontière entre code standard et extensions. C'est un métier...

  5. #5
    Membre confirmé Avatar de jula
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2003
    Messages : 81
    Par défaut
    tout à fait d'accord: il s'agit du deuxième logiciel que je dois porter et pour les deux j'ai constaté que rien n'était prédisposé à la portabilité...mais il faut dire que ce n'est pas évident de faire du code portable, en tout cas, merci pour ton aide !
    Jula.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/09/2014, 09h34
  2. probleme avec les constantes
    Par adel25 dans le forum C++
    Réponses: 4
    Dernier message: 21/08/2011, 16h44
  3. Réponses: 11
    Dernier message: 12/04/2011, 17h30
  4. Réponses: 4
    Dernier message: 02/05/2009, 17h56
  5. Réponses: 9
    Dernier message: 25/04/2007, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo