Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre du Club
    Inscrit en
    août 2010
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 83
    Points : 55
    Points
    55

    Par défaut #pragma dans une macro

    Bonjour à tous,

    je ne pense que ce soit possible avec C++Builder (XE2) car je n'ai rien trouvé sur le net, mais j'ai vu qu'on pouvait le faire avec Visual Studio.
    http://msdn.microsoft.com/en-us/library/d9x1s805.aspx

    The compiler also supports the __pragma keyword, which has the same functionality as the #pragma directive, but can be used inline in a macro definition.

    Je voudrais avoir ce genre de macro :
    Code :
    1
    2
    3
    4
    5
    6
     
    #define REGISTER_STARTUP(class) static void Reg_##class() \
           { \
           class::CreateHandle(); \
           } \
           #pragma startup Reg_##class

  2. #2
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 053
    Points : 14 270
    Points
    14 270

    Par défaut

    Je suppose que tu as testé ta macro et que tu as obtenu un message d'erreur, lequel ?

    J'ai écrit ceci pour un Register de Class automatique dans le fichier H


    Fichier H
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    class toto
    {
    private:
      static bool Created;
    public:
      static bool CreateHandle();
    };
    bool toto::Created = toto::CreateHandle();
    Fichier CPP
    Code :
    1
    2
    3
    4
    5
    6
     
    /*static*/ bool toto::CreateHandle()
    {
      ShowMessage("toto est là !");
      return true;
    }
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre du Club
    Inscrit en
    août 2010
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 83
    Points : 55
    Points
    55

    Par défaut

    ah tiens c'est vraiment pas bête !

    Je vais vois ce que je peux faire avec ça. Merci !

  4. #4
    Membre Expert
    Inscrit en
    septembre 2007
    Messages
    610
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 610
    Points : 1 095
    Points
    1 095

    Par défaut

    #pragma startup fonctionne sous XE2, le problème doit être plutôt le fait d'avoir #pragma à l'intérieur d'un #define.

    il y a une autre syntax à
    "#pragma argument"
    qui est
    _prama(argument)
    qui permet de remédier à celà mais elle ne fonctionne qu'avec les compilateurs c99 or c++0x. A tester sous XE2, je n'ai pas le courage de le faire

  5. #5
    Membre du Club
    Inscrit en
    août 2010
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 83
    Points : 55
    Points
    55

    Par défaut

    Merci nirgal,

    j'avais testé mais ça ne fonctionne pas.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •