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

Bibliothèques Discussion :

2 Define est ce que je peut les mettre dans un entete séparé !


Sujet :

Bibliothèques

  1. #21
    Débutant Avatar de ..::snake::..
    Inscrit en
    Mai 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 318
    Points : 120
    Points
    120
    Par défaut
    c'est la meme chose mais ou , je ne voi pas !
    #define , je ne voi pas son utilité , et je ne le voi pas dans ton example précedent

  2. #22
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Normale que tu ne le vois pas, je ne l'ai pas mis .
    #define s'emploi comme ça :
    Ca défini une variable "constante"(enfin plus ou moins) qui à une valeur de 100.
    Partout où tu utilisera la variable var, au moment du passage du préprocesseur, elle sera remplacé par sa valeur(soit 100) .
    Ca peut aussi être employé pour créer un macro(sorte particulière de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define fonction(){printf("blabla");}
    Tu peux mettre ça dans un .h, mais tu trouves toutes ces informations dans n'importe quel cours(http://c.developpez.com) .
    Omnes Vulnerant Ultima Necat
    Bye

  3. #23
    Débutant Avatar de ..::snake::..
    Inscrit en
    Mai 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 318
    Points : 120
    Points
    120
    Par défaut
    Merci pour l'explication

  4. #24
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Ta pas l'air convaincu .
    Omnes Vulnerant Ultima Necat
    Bye

  5. #25
    Débutant Avatar de ..::snake::..
    Inscrit en
    Mai 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 318
    Points : 120
    Points
    120
    Par défaut
    Pas non convaincu
    Mais pas compris

  6. #26
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Ok, comme je suis de bonne humeur, je vais faire un petit cour mais normalement tu devrais regarder les cours avant tous :
    Le C est un langage qui suit la programmation structurée qui repose sur l'équation de Wirth :
    Algorithmes + structures de données = Programmes.
    Dans ce type de programmation, en gros :
    au démarrage c'est la fonction main qui est appelée et cette fonction peux appeler elle même d'autres fonctions que tu peux créé de plusieurs façon :
    - la première est classique :
    prototype :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    type ma_fonction(les arguments de ma fonctions);
    Et sa déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    type ma_fonction(les arguments de ma fonction)
    {
     /* Instruction qui seront éxécutés lors de l'appel de la fonction */
     return valeur;
    /* Instruction qui renvoie une valeur en quittant la fonction */
    }
    - il éxiste une deuxième façon, celle des macros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define ma_fonction(ses arguments){/*les instruction de ma_fonction*/}
    Ensuite, une fois qu'une fonction est défini on peux lui faire appel depuis n'importe quel endroit où elle est déclaré, il faut pour ça qu'elle soit déclaré dans le même fichier ou que celui-ci soit inclus, etq 'uon lui transmette les arguments qu'elle attend.

    Mais #define peut aussi définir des constantes spéciales, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define NOMBRE_QUI_SERA_REMPLACE_PAR_SA_VALEUR_AU_PASSAGE_DU_PRE-PROCESSEUR = 100;
    partout où ce nombre figurera, lors du passage du pré-processeur(qui s'occupe de toutes les instruction qui commence par une # comme #include et qui passe juste avant la ompilation), exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #define NOMBRE_QUI_SERA_REMPLACE_PAR_SA_VALEUR_AU_PASSAGE_DU_PRE-PROCESSEUR = 100;
    #include <stdio.h>
    #include <stdlib.h>
     
     
    int main(int argc, char * argv)
    {
     int x = NOMBRE_QUI_SERA_REMPLACE_PAR_SA_VALEUR_AU_PASSAGE_DU_PRE-PROCESSEUR/10;
    }
    Là où avec une variable classique, son remplacement ce serait fait au moment de la compilation, avec #define c'est au moment du passage du pré-processeur que le texte(NOMBRE_QUI_SERA_REMPLACE_PAR_SA_VALEUR_AU_PASSAGE_DU_PRE-PROCESSEUR)est remplacé par sa valeur, et donc quand le moment de la compilation arrive, voilà le code que compile le compilateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* contenu de stdlib.h et de stdio.h */
    int main(int argc, char * argv)
    {
     int x = 100/10;
    }
    le pré-processeur inclu les fichier stdlib.h et stdio.h et il remplace toutes les apparition de NOMBRE_QUI_SERA_REMPLACE_PAR_SA_VALEUR_AU_PASSAGE_DU_PRE-PROCESSEUR par sa valeur, qui est 100.
    l'inconvenient de ce procédé :
    - on ne peut pas dire de quel type est la variable défini, le processeur le déduis tout seul, mais il peut se tromper .

    tu as compris ?
    Omnes Vulnerant Ultima Necat
    Bye

  7. #27
    Débutant Avatar de ..::snake::..
    Inscrit en
    Mai 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 318
    Points : 120
    Points
    120
    Par défaut
    Maintenant je comprend mieu

    Merci , mais tout les DEFINE alors contient des nombre ou calcul de nombre ?

    Puisque ici Define conetenai un nombre de 100 !

    Merci

  8. #28
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Shugo78
    FAUX


    Il n'y a pas de signe = dans un define

    • De plus il existe une norme d'écriture : comme define définit des constantes la plupart du temps , on les mets en MAJUSCULES.
    • Les define de fonctions sont à éviter le plus possible (rendent la maintenance d'un code NETTEMENT plus difficile : il faut faire des allers-retours .c <-> .h pour savoir ce qu'on lit).
    • define peut servir à définir aussi des chaînes de caractères, des nombres réels, des actions, ....
    • On peut faire des opérations sur des define numériques.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #define MOI        "Souviron34"
     
    #define PI         3.14157
     
    #define SORTIE     1
    #define PAS_SORTIE 2
     
    #define TOTAL      (SORTIE + PAS_SORTIE)
    #define TOTAL1     TOTAL + 1 
    .....
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #29
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Citation Envoyé par souviron34
    FAUX


    Il n'y a pas de signe = dans un define
    Tu as raison, j'ai oublé.
    En ce qui concerne les macros :
    - en plus de ce que tu as a dit elles sont à éviter aussi car elle peuvent provoquer des effets de bords indésirés.
    Merci de corriger le cour que je faisais à _snake_ .
    Omnes Vulnerant Ultima Necat
    Bye

  10. #30
    Débutant Avatar de ..::snake::..
    Inscrit en
    Mai 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 318
    Points : 120
    Points
    120
    Par défaut
    Merci a vous : Shugo78 et souviron34

    Je comprend mieu la

  11. #31
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Tant mieu, c'était le but !
    Omnes Vulnerant Ultima Necat
    Bye

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/04/2013, 18h00
  2. Est-ce que ca existe les constructeurs abstraits ?
    Par Invité dans le forum Delphi
    Réponses: 2
    Dernier message: 19/05/2007, 11h19
  3. est ce que postgresql peut s'installer sur un FAT32 ??
    Par mehdi_swatch dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 31/03/2006, 09h57
  4. [MySQL] Est-ce que php supporte les requêtes imbriquées ?
    Par dahan dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/03/2006, 18h50
  5. Est ce que on peut utiliser mysql5 en production
    Par amika dans le forum Installation
    Réponses: 7
    Dernier message: 12/09/2005, 15h21

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