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 :

macro avec fonction


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut macro avec fonction
    bonjour,
    j'ai le désir de mettre le hostname du serveur de compilation (par example) en dur (static char) dans le binaire pour concerver la tracabilité.
    Ma question, donc, se concentre en :
    "comment exécuter une fonction lors de la compilation et ainsi obtenir sa valeur?"
    Les modifications dans le makefile serait une bonne idée aussi, mais par contre, les pré et post commande (script et variable d'environnement) sont proscrit...

    Merci beaucoup pour votre aide!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
             60 #define xstr(s) str(s)
             61 #define str(s) #s
             62 #define CONCAT(a, b) a b
             63 
             64 static char chostname[10];
             65 string getHostname(){
             66     gethostname(chostname, 9);
             67     string shostname(chostname);
             68     return shostname;
             69 }
             70 
             71 static char hostname=CONCAT("COUCOU:",chostname);

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Bonsoir,

    Si vous pouvez utiliser la syntaxe $(shell...) dans le makefile,
    il suffit d'ajouter une ligne du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ZZZ_HOSTNAME=$(shell hostname)
    et de passer la valeur au préprocesseur C.

    Sinon vous pouvez aussi vous amuser à ajouter un fichier zzz_hostname.cpp comme celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <stdio.h>
    #include <unistd.h>
     
    int main(int, char**) {
        char hostname[ 100 ] = "";
        gethostname(hostname, sizeof(hostname));
        printf("#define ZZZ_HOSTNAME \"%s\"\n", hostname);
        return 0;
    }
    et dans votre makefile quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    zzz_hostname.h:
        g++ -o zzz_hostname.exe zzz_hostname.cpp
        zzz_hostname.exe > zzz_hostname.h
     
    # + dépendances des objets sur zzz_hostname.h
    et ensuite dans votre autres fichiers sources :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include "zzz_hostname.h"

Discussions similaires

  1. [XL-2007] Lancer une macro avec la fonction "SI"
    Par polder dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/01/2011, 17h24
  2. [XL-2007] Macro complémentaire - fonction avec argument
    Par larryj dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/05/2010, 14h10
  3. Macro avec fonction si
    Par charlyfanny dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/02/2009, 16h41
  4. Exécution macro avec une fonction intégré
    Par kiwi31 dans le forum VBA Access
    Réponses: 13
    Dernier message: 22/05/2007, 16h18
  5. [VBA-E] macro avec fonction "TRANSPOSE"
    Par Ardeciel dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 12/06/2006, 16h11

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