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 :

[débutant][macros] préscisions sur #define


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Par défaut [débutant][macros] préscisions sur #define
    Bonjour à tous,

    Désolé pour le sujet pas très clair mais je manquais d'inspiration!

    En fait, je voudrais créer des defines un peu spéciaux.
    Je m'explique : j'essaie de créer un moteur 3D dont l'unité sera le millimètre (ça devrait suffire). Mais si on veut travailler en CM/DM/M/DAM/HM/KM c'est un peu embêtant d'écrire 1000000 pour 1km. Je voudrais donc pouvoir écrire par exemple : fonction_ligne(3km) à à la place de fonction_ligne(3000000)!
    Il me suffit donc d'écrire les macros suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifdef _RACCOURCIS_MESURES_
    #define mm *1
    #define cm *10
    #define dm *100
    #define m *1000
    #define dam *10000
    #define hm *100000
    #define km *1000000
    #endif
    Mais toutes les "m" vont être remplacés par *1000 est ça ne va pas du tout car, par exemple, le m de "enum" va être remplacé par *1000 et le compilateur va renvoyer une belle erreur!

    Je voudrais donc appliquer la macro si, et seulement si, un nombre se trouve avant!
    Avez vous une idée sur la façon dont je doit procéder?

    Merci d'avance de votre aide!

    Spartan03

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je ne pense pas que ce soit possible, mais honêtement, ça me paraît vraiment foireux comme plan...

    le m de "enum" va être remplacé par *1000 et le compilateur va renvoyer une belle erreur!
    Là par contre, je ne pense pas que l'analyseur lexical soit aussi bête.

    En général l'unité dans un moteur 3D est le mètre, et on a rarement besoin d'aller au-delà de 0.001 ou 1000. A moins que tu aies des besoins vraiment spécifiques.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Par défaut
    Ok merci. En fait, je pensais ne pas me servir de la virgule (en utilisant des long). Mais je vais suivre ton conseil en utilisant des double!
    Merci

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

Discussions similaires

  1. [WD-2010] [Débutant] Macros et UF n'apparaissant que sur un poste?
    Par Starnice dans le forum Word
    Réponses: 3
    Dernier message: 22/04/2015, 13h27
  2. débutant demande conseil sur sa macro
    Par magicfly dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/03/2011, 18h58
  3. Débutant: exécuter .jar sur un Mac
    Par hvgentil dans le forum JBuilder
    Réponses: 3
    Dernier message: 05/07/2004, 23h21
  4. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53
  5. [EJB] Débutant en EJB sur Weblogic
    Par viny dans le forum JBuilder
    Réponses: 8
    Dernier message: 24/04/2003, 15h34

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