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 :

#ifndef #endif dans une fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de med_alpa
    Inscrit en
    Juillet 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 134
    Par défaut #ifndef #endif dans une fonction
    Bonjour,

    Je suis entrain d'analyser un code écrit en C pour un µControlleur MSP430.

    Je sais que #ifndef peut être utilisé surtout dans les fichiers Headers pour ne pas recharger le même code 2 fois ou rentrer dans des boucles infinies d'"include".

    Mais ce que je n'ai pas saisi, c'est l'utilisation de #ifndef à l'interrieur d'une fonction.

    exemple :
    #ifndef DISABLE_COMET
    tmp_connection.comet_send_ack = 0;
    tmp_connection.comet_passive = 0;
    #endif
    si ça donne le même résultat qu'un if... else, pourquoi ne pas utiliser le if/else?

    merci.

  2. #2
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut
    parce qu'ainsi, ce test est réalisé une fois pour toute à la compilation et le programme est directement compilé avec ce code si DISABLE_COMET n'est pas définit.

    C'est généralement utilisé pour pouvoir "régler" le programme à la compilation

  3. #3
    Membre confirmé Avatar de med_alpa
    Inscrit en
    Juillet 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 134
    Par défaut
    ok, merci beaucoup.

    C'est convainquant comme réponse

  4. #4
    Membre confirmé Avatar de med_alpa
    Inscrit en
    Juillet 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 134
    Par défaut
    Re,

    Juste une petite question par rapport au même sujet.

    Je n'ai pas trouvé de
    #define DISABLE_COMET
    dans le code.

    Donc, comment on peut savoir si ça était défini ou pas?

    autrement dit, comment faire l'initialisation?

    Merci.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par med_alpa Voir le message
    Je n'ai pas trouvé de #define dans le code.
    Donc, comment on peut savoir si ça était défini ou pas?
    Ces macros se trouvent souvent au fin fond de headers système eux-mêmes inclus par d'autres headers jusqu'à cinq ou six niveaux d'imbrications. Donc, il se cachent bien.

    Sinon, ça dépend beaucoup du compilateur que tu utilises, mais il est possible de définir des macros au moment où tu l'invoques. Avec GCC, par exemple, c'est l'option -D. C'est utile pour définir un contexte de compilation sans avoir à modifier le code. Par exemple, il est fréquent de définir une macro DEBUG de cette manière, pour activer automatiquement des contrôles et des sorties écrans supplémentaires.

Discussions similaires

  1. Recuperation de formulaire dans une fonction
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 23/06/2004, 15h04
  2. Transmission d'un objet crée dans une fonction
    Par EvilAngel dans le forum ASP
    Réponses: 2
    Dernier message: 10/05/2004, 20h19
  3. Utilisez MinimizeName() dans une fonction
    Par James_ dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/05/2004, 18h05
  4. [Postgresql]Connecter à une autre base dans une fonction
    Par alex2205 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2003, 11h30
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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