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 :

Projet personnel : organisation


Sujet :

C

  1. #1
    Membre chevronné Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Par défaut Projet personnel : organisation
    Bonjour à tous,

    Je vais tenter d'exposer mon idée en étant le plus clair possible..
    Je suis débutant en C et je souhaiterais réaliser un petit projet personnel : un eggdrop ( bot irc pour ceux qui ne connaissent pas. ).

    Je me suis donc mis à coder mais je pense que je manque d'organisation dans mon code ainsi que surement quelques méthodes.

    Je m'explique :

    - je tente de créer des fonctions légères ( je veux dire par là tenter au maximum de reduire le nombre de paramètres et ne faire qu'une seule tâche par fonction ).

    - quand j'ai trop de variables j'essaie de les regrouper en structures.

    - j'essaie d'eviter au maximum les variables globales.

    Mais je me retrouve confronter à quelques problèmes, notamment la continuité d'une variable d'une fonction à une autre.

    Comment par exemple définir une structure qui regroupera les informations de mon eggdrop ( nom, pass, operateur, channels etc ... ) et qui puisse etre atteinte par toutes mes fonctions sans quelle soit globale ?

    J'espere ne pas avoir ete trop confu.
    Merci de m'avoir lu !

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    il te faut de toutes façons avoir quelque chose de statique, global, ou ce que tu veux..

    Ce qu'on veut dire quand on dit "éviter les varaibles globales", c'est éviter de s'en servir pour passer d'une routine à l'autre, d'un module à l'autre..

    Dans ton cas, tu peux avoir

    Structs.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct pEggDrop {
       char *nom ;
       char *pass ;
       char *operateur ;
       int    *channels ;
       ....
    } Eggdrop ;
    Main.c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdlib.h>
    #include "Structs.h"
     
     
    int main ( int argc, char **argv)
    {
       EggDrop MyEggdrop ; 
     
     
       Init (&MyEggdrop);
      ...
    }
    Et dans toutes tes fonctions ou modules, tu as en entrée (et ou sortie) un pointeur sur une structure EggDrop. (évidemment, dans les modules, il te faudra inclure "Structs.h").

  3. #3
    Membre chevronné Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Par défaut
    D'accord, c'est un peu plus clair.

    Ce qu'on veut dire quand on dit "éviter les varaibles globales", c'est éviter de s'en servir pour passer d'une routine à l'autre, d'un module à l'autre..
    Je n'ai pas bien saisit

    Sinon autre question, j'ai déclaré plusieurs structures dans différents .h mais j'ai des fonctions qui sont ammenées à prendre 2 structures en paramètres, dois-je déclarer toutes mes structures dans le même .h ? ou dans le meme .h que la fonction en question ?

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Non, simplement dans des .h qui sont inclus par le .h de la fonction en question.
    Et encore, tu n'y es même pas forcé si tu utilises juste des pointeurs de structure, vu qu'à ce moment-là tu peux déclarer les structures sans les définir.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre chevronné Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Par défaut
    Bon je suis completement dans le flou la
    Qu'est ce qui ne va pas ?

    Par exemple :
    Code main.c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdlib.h>
    #include <stdio.h>
    #include "serveur.h"
     
    int main()
    {
        //Création et initialisation du serveur irc
        Serveur MyServeur;
        ServInit(&MyServeur);
     
    }


    Code serveur.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct pServeur
    {
        char *Server;
        int Port;
        char *ChanMain;
    }Serveur;
     
    void ServInit(Serveur *);

    Code serveur.c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "fct.h"
     
    void ServInit()
    {
        MyServeur.Server = "irc.link-net.org";
        MyServeur.Port = 6667;
        MyServeur.ChanMain = "#MAINCHAN";    //Main Chan;
    }

  6. #6
    Membre chevronné Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Par défaut
    Autant pour moi je viens de me rendre compte de mes erreurs.
    J'ai melangé les 2 ecritures de la structure...

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par jbarreau-mainson Voir le message
    Ce qu'on veut dire quand on dit "éviter les varaibles globales", c'est éviter de s'en servir pour passer d'une routine à l'autre, d'un module à l'autre..
    Je n'ai pas bien saisit
    Ce qui fortement déconseillé c'est de faire, par exemple pour les fonctions :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    EggDrop MyEggdrop ;
     
     
    void Init ( void)
    {
       MyEggdrop.xxx = yyy ;
    }
     
    int main ( int argc, char **argv)
    { 
       Init ();
      ...
    }
    et d'autant plus si les fonctions sont dans d'autres modules...

  8. #8
    Membre chevronné Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Par défaut
    Wai ...
    C'est exactement ce que j'avais fait

    Merci pour ces explications !

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

Discussions similaires

  1. [Recrutement] Importance des projet personnels ?
    Par Mathieu.J dans le forum Emploi
    Réponses: 3
    Dernier message: 20/07/2007, 13h42
  2. Réponses: 6
    Dernier message: 21/11/2006, 23h11
  3. [VB6]Projet Personnel - Arkanoid
    Par jeltman dans le forum VB 6 et antérieur
    Réponses: 28
    Dernier message: 10/06/2006, 12h08
  4. Composition d'un projet personnel
    Par mealtone dans le forum Développement Web en Java
    Réponses: 13
    Dernier message: 21/10/2005, 14h40

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