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

Code::Blocks Discussion :

Modules � la mani�re VBA ?


Sujet :

Code::Blocks

  1. #1
    Membre confirm�
    Homme Profil pro
    retrait�
    Inscrit en
    Septembre 2010
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : retrait�
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par d�faut Modules � la mani�re VBA ?
    Bonsoir � tous,
    Existe t-il un moyen simple d'�crire avec Code::Blocks, des fonctions dans un fichier autre que main.cpp mais pour autant utilisables comme si elles �taient �crites dans 'main.cpp', un peu � la mani�re de VBA. o� il est possible d'ajouter des modules distincts qui contiennent des proc�dures qui restent � disposition tout en n'encombrant pas inutilement la proc�dure principale.
    Dans l'onglet "Projets" de Code::Blocks, l�arborescence de l'espace de travail laisse supposer que le sous-r�pertoire "Sources" qui contient le sous-r�pertoire "main.cpp" pourrait contenir d'autres fichiers de fonctions qui une fois mises au points y resteraient stock�es mais utilisables ?
    L.P.

  2. #2
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Parfaitement.
    Ce que tu cherches s'appelle compilation s�par�e.

    Le langage C++ n'est pas compil� en une seule �tape.
    Pour l'essentiel ca se passe en trois grandes �tapes.

    Supposons que tu veuilles compiler un certain nombre de fichiers .cpp pour former une application.
    Chaque .cpp est compil� ind�pendamment, puis les r�sultats sont combin�s ensembles.

    Concr�tement, chaque fichier .cpp est pass� au pr�processeur, qui ex�cute les directives qui lui sont d�di�s (chaque ligne commen�ant par un #) et remplace les mots correspondant � des macros par le texte de ces macros. C'est � ce moment que chaque #include est remplac� par le contenu du fichier inclus.

    Puis ces fichiers trait�s sont compil�s, produisant ce qu'on appelle souvent des fichiers "objets".
    Dans ces fichiers objets, on a des fonctions d�finies, et des appels � des fonctions externes, qui sont suppos�es exister, mais pas d�finies ici, qu'on qualifie de "symboles non r�solus".

    Enfin, l'ensemble des ces fichiers sont r�unis, et les diff�rents symboles non d�finis sont reli�s � leurs d�finitions.
    C'est l'�tape d'�dition des liens.

    Le r�sultat est un unique programme.

    Pour r�pondre � ta question.
    Tu d�finis une fonction f dans un fichier (arbitrairement je le nommerai fonction.cpp).
    Tu �cris aussi un fichier d'en-t�te, qui ne fait que d�clarer cette fonction. Tu appelles ce fichier fonction.h (le m�me nom de base que celui d�finissant la fonction)
    Tu introduis en premi�re ligne de fonction.cpp la directive #include "fichier.h", de fa�on � s'assurer que la compilation de l'en-t�te soit correcte.
    Dans main.cpp, tu ajoutes la m�me directive.

    A pr�sent, main.cpp d�clare la fonction f, et fonction.cpp la d�clare puis la d�finit.
    A l'�dition des liens, le compilateur reconnaitra que les deux fonctions f sont la m�me.

    Pour continuer sur cette voie, regarde ce que sont:
    • la garde contre double inclusion
    • le mot cl� extern
    • les namespace anonyme, qui permet de rendre un symbole introuvable depuis l'exterieur d'une unit� de compilation

  3. #3
    Membre confirm�
    Homme Profil pro
    retrait�
    Inscrit en
    Septembre 2010
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : retrait�
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par d�faut
    Salut � tous et � 'ternel' en particulier,
    C'est en fait une sorte de r�flexe pavlovien (du � VBA) qui m'a amen� � interroger sur cette question.
    Comme je d�bute avec ces nouveaux outils et que mes marques ne sont pas faciles � trouver, je pense me simplifier un peu la t�che en limitant autant que possible 'la surface de travail' � la routine en cours de mise au point, �vitant ainsi l'utilisation fr�quente de l�ascenseur.
    Par exemple, si le bout de code "Hello world" est compil� puis lanc� depuis code::blocks la console ne se referme pas � la fin.
    Mais si je lance l'ex�cutable depuis l'explorateur ce n'est plus le cas, sauf si j'ai rajout� une 'proc�dure' comme celle-ci que j'ai trouv� dans un exemple.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    string consolePause()  // declenche la PAUSE avec la console en direct depuis l'.exe
    {
        cout <<"Press Enter to Exit . . .\n";
            cin.get();
                cin.clear();
    return "";
    }
    que j'appelle ensuite, juste avant le return 0; ( consolePause(); )En pratique donc comment enlever du fichier main.cpp les 6 lignes ci-dessus, pour les mettre dans un fichier du r�pertoire 'Sources' et l'appeler ci besoin.

    Comment faire aussi pour passer d'�ventuels param�tres (ce qui n'est pas le cas ici).
    Un exemple serait le bienvenu.
    Merci d'avance.
    L.P.

  4. #4
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    S'il te plait regarde les Internets () pour les include c'est la premi�re chose qu'on apprend.

    Apr�s, il y aura des choses plus avanc�es que tu apprendras en cours de route (que des d�finitions et pas de d�claration dans les ent�tes, include guard, la d�claration des templates, que c'est juste un copi�/ coll�, ...)

    Mais en gros (je n'ai pas compil� donc peut-�tre qu'il y aura des modifications pour compiler):
    Tu vas avoir un fichier ent�te common.h (ou common.hpp pour dire que c'est une ent�te C++)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifndef COMMON_H
    #define COMMON_H
     
    #include <string>
     
     
    std::string consolePause();
     
     
    #endif // COMMON_H
    Tu vas avoir ton fichier source common.cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include "common.h" // or #include "common.hpp"
     
    #include <iostream>
     
     
    using std::cout;
    using std::cin;
    using std::endl;
    using std::string;
     
     
    string consolePause() { // declenche la PAUSE avec la console en direct depuis l'.exe
        cout << "Press Enter to Exit . . ." << endl;
        cin.get();
        cin.clear();
     
        return "";
    }

    Et ton source main.cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include "common.h" // or #include "common.hpp"
     
     
    int main(int argc, char* argv[])
    {
    //  ...
     
        consolePause();
     
    //  ...
     
         return 0;
    }

    Apr�s cet exemple c'est juste si tu mets tous tes fichiers dans le m�me dossier .
    Si tu mets les fichiers common.h[pp]/ common.cpp dans un autre dossier il faut changer l'include du fichier main.cpp.

    Pour le passage de param�tre , c'est aussi un truc qu'on apprend en premier (et en C++ il y a la surcharge)

  5. #5
    Membre confirm�
    Homme Profil pro
    retrait�
    Inscrit en
    Septembre 2010
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : retrait�
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par d�faut
    Salut � tous et Merci � 'foetus' pour sa r�ponse.

    (que je vais essayer de mettre en application d�s que j'aurais peaufin� le code que j'ai post� sur le forum c++ � propos de la saisie contr�l�e et born�e de floats)
    L.P.

  6. #6
    Membre confirm�
    Homme Profil pro
    retrait�
    Inscrit en
    Septembre 2010
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : retrait�
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par d�faut
    Merci � 'foetus' c'est OK.
    Salut � tous,
    L.P.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Comment cr�er un module standard en VBA ?
    Par Aegnor dans le forum VBA Access
    R�ponses: 11
    Dernier message: 09/02/2015, 18h12
  2. R�ponses: 1
    Dernier message: 13/11/2014, 10h49
  3. Module .bas Outlook VBA
    Par muse54 dans le forum VBA Outlook
    R�ponses: 7
    Dernier message: 29/10/2013, 21h39
  4. [XL-2003] Supprimer tous module et code VBA d'un classeur ferm�
    Par grand_arnaud dans le forum Macros et VBA Excel
    R�ponses: 15
    Dernier message: 20/09/2012, 17h26
  5. utiliser une fonction de module VSTO depuis VBA
    Par Nicopilami dans le forum Macros et VBA Excel
    R�ponses: 0
    Dernier message: 21/02/2012, 15h30

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