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 :

Comprendre un Point H, ou faire un fichier annexe de fonction.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Par défaut Comprendre un Point H, ou faire un fichier annexe de fonction.
    Bonjour a tous,
    En faisant des exercices, on me demande de télécharger un fichier qui se nomme SDLS.h, on me dit de telecharger aussi le SDLS.c.
    ok c'est fait. (et je regarde ce que j'ai dans ces fichiers)

    J'ouvre le .c, et je trouve quelques fonctions dedans. (ouvrir une fenêtre, faire une ligne, faire un cercla, charger une image, etc etc.)
    J'ouvre le .h, et je trouve ceci dedans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifndef SDLS_h
    #define SDLS_h
    // Version 1.1
    SDL_Texture* SDLS_loadTexture(char * filename, SDL_Renderer *ren);
    void SDLS_affiche_image(char * fname,SDL_Renderer * ren, int x, int y);
    int SDLS_init(int w, int h, SDL_Window **win, SDL_Renderer **ren);
    int SDLS_putpixels(SDL_Renderer * ren, Uint32* pixels,int w, int h);
    int SDLS_getpixels(SDL_Renderer * ren, Uint32* pixels,int w, int h);
     
    #endif
    Peut-on m'expliquer pourquoi ?

    Pour ma part, jusqu’à maintenant, je faisais un fonction.c, (comme le SDLS.c), que je renommais fonction.h (je sais ce n'est pas bien, mais je l'ai fait)

    et au lieu de faire #include <fonction.h>, je faisais #include "fonctions.h"
    je mets les guillemets et non le accolades. (Je sais, on vient de m'expliquer la différence entre le guillemet et le accolades, ca n'a rien a voir avec ma question)

    Je pensais faire bien....
    Peut-on m'expliquer ou me diriger vers un lien qui m'explique la construction d'un point .h. (c'est peut être pas utile de faire un point h)
    Dans ce cas, peut-on m'expliquer comment faire pour mettre mes fonctions dans un autre fichier afin d'alléger mon programme principal ?

    Merci pour vos explications.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papilou86 Voir le message
    Peut-on m'expliquer pourquoi ?
    Bonjour

    Une fonction doit se déclarer avant d'être appelée. Donc si dans ton code tu appelles (par exemple) SDLS_loadTexture il faut que le compilo sache qu'elle est du type "SDL_Texture*". En incluant le ".h" tu n'as plus besoin de faire ce travail, le préprocesseur le fait pour toi. Et le #ifndef + #define du début permet de protéger une double inclusion (si tu inclus par exemple "toto.h" et que "toto.h" inclut "SDLS.h").

    Citation Envoyé par papilou86 Voir le message
    Pour ma part, jusqu’à maintenant, je faisais un fonction.c, (comme le SDLS.c), que je renommais fonction.h (je sais ce n'est pas bien, mais je l'ai fait)
    Pas bien. Déjà d'une part parce qu'on peut faire autrement et d'autre part, un ".h" est destiné à être offert aux développeurs qui utiliseront la librairie associée, librairie peut-être protégée. Or comment protéger un source ".c" inclut dans un ".h" qui, lui, est offert au public ?

    Citation Envoyé par papilou86 Voir le message
    Peut-on m'expliquer ou me diriger vers un lien qui m'explique la construction d'un point .h. (c'est peut être pas utile de faire un point h)
    Dans ce cas, peut-on m'expliquer comment faire pour mettre mes fonctions dans un autre fichier afin d'alléger mon programme principal ?
    http://fr.lang.free.fr/cours/Generalites_Csyst_v1.0.pdf pages 6 à 11
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre très actif
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Par défaut
    merci de ta réponse et de la doc.
    Je vais essayé d'étudier cela.

    Si je comprends bien, (sans faire de .h), je peux compiler plusieurs fichiers .c dans un même fichier .exe

    Pour l'instant, pour compiler, je fais cela dans ma console windows :
    si je fais un seul fichier dessin.c (par exemple)

    gcc -mwindows -L./lib -I./include dessin.c -o dessin -lmingw32 -lSDL2main -lSDL2

    Donc, je dois donc pouvoir faire cela :
    Si je fais 3 fichiers dessin1.c, dessin2.c, dessin3.c

    gcc -mwindows -L./lib -I./include dessin1.c dessin2.c dessin3.c -o dessin -lmingw32 -lSDL2main -lSDL2

    C'est bien cela qu'il faut comprendre ?

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papilou86 Voir le message
    Donc, je dois donc pouvoir faire cela :
    Si je fais 3 fichiers dessin1.c, dessin2.c, dessin3.c

    gcc -mwindows -L./lib -I./include dessin1.c dessin2.c dessin3.c -o dessin -lmingw32 -lSDL2main -lSDL2
    Exact.

    Ou alors compilation par étapes
    gcc -I./include -mwindows -c dessin1.c
    gcc -I./include -mwindows -c dessin2.c
    gcc -I./include -mwindows -c dessin3.c
    gcc -L./lib -lmingw32 -lSDL2main -lSDL2 dessin1.o dessin2.o dessin3.o -o dessin
    C'est très pratique quand on veut écrire un Makefile pour compiler un projet.

    PS: (ne sachant pas à quoi sert "-m" j'ai présumé qu'il faisait partie de la compilation source donc je l'ai placé dans les étapes de compilation et non dans l'édition de liens)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre très actif
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Par défaut
    Merci de ton aide,
    Je crois comprendre ce que tu veux me dire, mais dis moi,

    Si par exemple dessin3.c contient des fonctions que j'appelle avec dessin1.c, dois je compiler dessin3 avant dessin1 ou cela n'a aucune importance.
    Merci

    Tant qu'a ma première question sur la fabrication du .h, y a t'il un tuto super simple ?

    Merci aussi pour cela.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papilou86 Voir le message
    Si par exemple dessin3.c contient des fonctions que j'appelle avec dessin1.c, dois je compiler dessin3 avant dessin1 ou cela n'a aucune importance.
    Aucune importance. C'est l'édition de liens qui rassemble le tout. Pas compliqué à vérifier: tu crées un fichier "toto.c" qui contient l'instruction toto() et tu compiles. Tu auras un message d'erreur au "ld" qui te dira qu'il ne trouve pas la fonction "toto". Et si tu compiles juste en t'arrêtant au module objet (cc -c toto.c) tu verras que là ça passe et que ça plante à l'étape suivante cc toto.o -o toto.

    Citation Envoyé par papilou86 Voir le message
    Tant qu'a ma première question sur la fabrication du .h, y a t'il un tuto super simple ?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 06/03/2009, 16h07
  2. Réponses: 10
    Dernier message: 06/02/2007, 21h34
  3. Réponses: 6
    Dernier message: 22/08/2006, 15h37
  4. Faire un fichier de configuration pour des scripts
    Par gene69 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 23/06/2006, 23h59
  5. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06

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