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 :

parametres fonction fixée par le programmeur


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Points : 57
    Points
    57
    Par défaut parametres fonction fixée par le programmeur
    Bonjour,

    voila je me pose une question par rapport aux parametes d'une fonction.

    voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        int __fastcall SetVersions(String filenameXML, String versionCSA, String versionPRE, String versionPRO, String versionIND);
        int __fastcall SetVersion(String filenameXML, String version, ??? );
    Enfaite mon programma mets a jour des versions de 4 fichiers differents grâce à la fonction SetVersions(...).
    et la fonction SetVersion(...) elle permet de mettre à jour qu'une seul version que l'on choisit a la place de ???.

    Ce que je voudrais, c'est ne pas créer une fonction pour chaque type de version et donc faire qu'une seul fonction qui mets à jour la fonction choisit, pour eviter de coder 4 identique dans l'ensemble sauf sur 3 lignes.

    Mon problemme est la, je me demandais comment coder le fait de mettre a la place des ??? un des 4 type de fichier et rien d'autre. Comme une sorte d'option.

    par exemple :

    pour mettre à jour la version du fichier csa je ferais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        SetVersion("mon_fichier_csa","v24.b", CSA );
    ensuite la meme chose pour chaque type de fichier. Mais je ne veux pas qu'on puisse rentrer TOTO ou PAF.

    je sais que la fonction peut faire un test de ce qui est rentrer pour, par exemple, ne rentrer que des chiffre de 0 à 9 et si c'est pas bon on dit "Attention c'est pas bien de rentrer ça" .

    mais c'est pas ce que je veux. je pense qu'il est possible de programmer quelque chose qui donne a acces a des options qui ici serait CSA, PRE, PRO ou IND. Un peu comme pour un DlgMessage ou on specifie les boutons qui s'affiche ...

    J'ai du mal a faire comprendre mon idée mais j'espere que vous avez compris

  2. #2
    Sub
    Sub est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Bonjour.

    Bon je suis pas certains d'avoir bien compris ce que tu voulais mais tu peux essayer de mettre une énumérations dans ton dernier paramètre et dans ta fonction tu fais un switch avec le traitement qui va bien selon le résultat.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Sub Voir le message
    Bonjour.

    Bon je suis pas certains d'avoir bien compris ce que tu voulais mais tu peux essayer de mettre une énumérations dans ton dernier paramètre et dans ta fonction tu fais un switch avec le traitement qui va bien selon le résultat.
    je test ça, et pense que l'idée correspont à ce que je veux faire.

    c'est simple mais j'en utilise jamais du coup je n'y avais pas pensé.

    :Merci:

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Dites, ça n'a rien à voir mais ça sert à quoi ces __fastcall qu'on trouve partout dans du code fait sous C++ Builder à part rendre le code non standard?
    Le nom laisse penser que c'est fait pour appeler plus rapidement la fonction, mais il faudrait alors supposer que les compilateurs normaux ne savent pas optimiser les appels de fonction .

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Une chose qui ne peut pas être optimisée, c'est la Convention d'Appel (Calling Convention): Elle doit toujours être clairement définie si l'on veut que différents compilos C se comprennent (ce qui n'est pas le cas en C++).

    Il y a trois/quatre conventions d'appel sous Windows:
    • __cdecl (Convention normale C),
    • __stdcall (convention Pascal, utilisée pour toutes les fonctions Windows et recommandée pour les DLLs car VB ne supporte que celle-là. Aussi utilisée en COM),
    • et __fastcall (les deux premiers paramètres sont passés par registres, utilisée extensivement par Borland et pratiquement nulle part ailleurs, pour des raisons qui m'échappent).
    • Enfin, il y a thiscall (sans underscore) pour les fonctions membres de classes C++ sous Visual. Note qu'on peut également forcer l'utilisation d'une autre convention d'appel (notamment, les méthodes COM sont en __stdcall au lieu de thiscall, pour pouvoir être utilisées dans d'autres langages dont C).

    Plus d'infos ici: Argument Passing and Naming Conventions
    et ici : The history of calling conventions, part 3

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Merci pour l'info, ça explique bien des choses.

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

Discussions similaires

  1. [CakePHP] passer un parametre dans la fonction appelée par le formulaire
    Par ifr38 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/10/2014, 14h38
  2. Réponses: 3
    Dernier message: 21/12/2005, 11h55
  3. Fonction défini par l'utilisateur
    Par m-mas dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/07/2005, 09h45
  4. SQL Server / Fonction définie par l'utilisateur
    Par borgfabr dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/03/2005, 15h14
  5. Fonctions définies par l'utilisateur
    Par DiGueDao dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/06/2003, 11h17

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