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 :

déclaration d'une fonction static


Sujet :

C

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut déclaration d'une fonction static
    Bonjour, ce post fait suite à un autre où vous m'avez convaincu de déclarer des fonctions static. J'ai fait un 1e essai en mettant tout simplement le mot clé static dans la déclaration de la fonction dans le .h et idem dans la définition de la fonction dans le .c Là, j'ai un warning disant

    ../Headers/Myheaders/mechanism.h:166: attention : `CheckUnusedSpecies' declared `static' but never defined
    ce que je comprends car dans le .h on ne met que des fonctions "publiques" (et si j'ai bien compris les fonctions static sont "privées"). Donc, je pense organiser mes fichiers sources .c de la manière suivante

    /* déclaration de toutes les fonctions privées */
    /*ici je mets tous les prototypes de mes fonctions static */
    static int f1(int,int);
    static double f2(void);

    /* définition de toutes les fonctions publiques */
    ici je mets l'implémentation des fonctions non static

    /* définition de toutes les fonctions privées */
    ici je mets l'implémentation des fonctions static

    et bien sûr, dans les headers, je ne mets que les prototypes des fonctions publiques (non static)
    Est-ce une bonne chose de raisonner ainsi ?

    Merci encore de votre aide

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Est-ce une bonne chose de raisonner ainsi ?
    Oui.
    - On doit aussi inclure le header comportant les déclarations de type et les prototypes des fonctions "publiques"
    - Le prototype des fonctions static n'est utile que si elles sont utilisées avant leur définition.
    - L'ordre de la définition des fonctions (static ou non) est libre

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Tu trouveras, je pense, la réponse à ta question ici: http://emmanuel-delahaye.developpez....ganiser_source

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    merci

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par salseropom
    (et si j'ai bien compris les fonctions static sont "privées").
    Oui. Ce que tu as fait est une très bonne démarche. C'est ce que j'appelle en cours, la méthode de "l'erreur juste."

    On crée, une erreur, on constate la réaction du compilateur, on cherche à l'intepréter, voir si elle est cohérente, et on conclus "l'erreur est juste". Tout va bien. Ne reste plus qu'à la corriger.

    Evidemment, cette technique n'est pas assez intellectuelle, alors elle n'est jamais enseignée...
    Donc, je pense organiser mes fichiers sources .c de la manière suivante

    /* déclaration de toutes les fonctions privées */
    /*ici je mets tous les prototypes de mes fonctions static */
    static int f1(int,int);
    static double f2(void);

    /* définition de toutes les fonctions publiques */
    ici je mets l'implémentation des fonctions non static

    /* définition de toutes les fonctions privées */
    ici je mets l'implémentation des fonctions static

    et bien sûr, dans les headers, je ne mets que les prototypes des fonctions publiques (non static)
    Est-ce une bonne chose de raisonner ainsi ?
    Oui.

    Mais je suggère plutôt ceci, c'est plus logique et plus simple. (J'aime bien quand c'est simple).

    Dans les sources (.c)

    /* définition de toutes les fonctions privées */
    ici je mets l'implémentation des fonctions static

    /* définition de toutes les fonctions publiques */
    ici je mets l'implémentation des fonctions non static

    Et voilà. En principe, pas besoin de prototypes séparés pour les fonctions privées.

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

Discussions similaires

  1. [C#]Déclaration d'une fonction globale
    Par Raton dans le forum C#
    Réponses: 7
    Dernier message: 21/09/2013, 12h27
  2. [C#] Appel d'une fonction static impossible ?
    Par TheParadoX dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/08/2006, 10h23
  3. Définition d'une fonction static ?
    Par tintin72 dans le forum C++
    Réponses: 9
    Dernier message: 22/12/2005, 11h50
  4. Réponses: 3
    Dernier message: 15/12/2005, 22h04
  5. Réponses: 4
    Dernier message: 26/07/2005, 13h38

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