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 :

Comment ça se fait qu'un fichier .c soit exécuté sans qu'il contient un main()?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Par défaut Comment ça se fait qu'un fichier .c soit exécuté sans qu'il contient un main()?
    Bonjour,
    J'ai un projet en C qui contient plusieurs fichiers ".c" et ".h".
    Ce projet est constitué de plusieurs dossiers et il y'a des Makefile partout..
    Comment ça se fait qu'un fichier .c soit exécuté sans qu'il contient un main()?
    Et quel est le rôle des Makefile ??

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par condor_01 Voir le message
    Comment ça se fait qu'un fichier .c soit exécuté sans qu'il contient un main()?
    Un fichier .c n'est jamais execute, qu'il contienne main() ou non. L'executable resultant de la compilation d'un ou plusieurs fichiers .c peut etre execute, par contre.

    Et quel est le rôle des Makefile ??
    Un Makefile est utilise par l'utilitaire make pour construire un executable a partir d'un ou plusieurs fichiers sources, en ne recompilant que les unites de compilation qui ont ete modifiees, ou qui dependent de fichiers ayant ete modifies.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par condor_01 Voir le message
    Bonjour,
    J'ai un projet en C qui contient plusieurs fichiers ".c" et ".h".
    Ce projet est constitué de plusieurs dossiers et il y'a des Makefile partout..
    Comment ça se fait qu'un fichier .c soit exécuté sans qu'il contient un main()?
    Et quel est le rôle des Makefile ??
    A moins que ton fichier ".c" contienne du code interprété (shell, ruby, perl, python) il ne sera jamais exécuté. Eventuellement, s'il contient du code C, il peut être lié lors de la compilation à d'autres sources ".c" et dans ce cas l'ensemble des sources forme un seul exécutable qui a accès à toutes les fonctions de tous les sources ".c" (sauf cas particulier du mot "static")

    Très brièvement parce que c'est un gros truc à appréhender, le Makefile (ou makefile) est un langage décrivant la méthode de création d'un fichier "y" à partir d'un fichier "x". Ou plus généralement de création de fichier ".y" à partir d'un fichier ".x". Tu décris dans le Makefile comment construire le 2° quand on a le premier (ce qu'on nomme "dépendances") et ensuite, il te suffit de taper "make toto.y". Si le fichier "toto.x" existe et qu'il est plus récent que le fichier "toto.y", la commande make aidée du fichier Makefile reconstruira alors le fichier "toto.y" à partir de "toto.x". Très utile pour les gros projets où on ne veut recompiler que ce qui change...
    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]

  4. #4
    Membre éclairé Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Par défaut
    Merci pour vos réponses.
    En fait, je dois travailler sur un fichier ".c" qui ne contient que des définitions de fonctions.
    Mais je ne peux pas tester ce fichier tout seul et je n'ai pas compris comment est il appelé dans le programme global ..

  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 condor_01 Voir le message
    Mais je ne peux pas tester ce fichier tout seul et je n'ai pas compris comment est il appelé dans le programme global ..
    Un fichier n'est pas appelé. Ce sont les fonctions qui sont appelées.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par condor_01 Voir le message
    Merci pour vos réponses.
    En fait, je dois travailler sur un fichier ".c" qui ne contient que des définitions de fonctions.
    Mais je ne peux pas tester ce fichier tout seul et je n'ai pas compris comment est il appelé dans le programme global ..
    Ben rien ne t'empêche de construire toi-même un "main()" pour tester les différentes fonctions...
    Pour te perfectionner voir les cours et tutoriels C et la FAQ C.
    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]

  7. #7
    Membre éclairé Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Par défaut
    Merci

  8. #8
    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 condor_01 Voir le message
    J'ai un projet en C qui contient plusieurs fichiers ".c" et ".h".
    Ce projet est constitué de plusieurs dossiers et il y'a des Makefile partout..
    Comment ça se fait qu'un fichier .c soit exécuté sans qu'il contient un main()?
    Il arrive que certaines bibliothèques structurantes (dites 'framework') contiennent un main(), ce qui fait qu'il n'est pas visible. C'est cas des applications Windows qui utilisent l'API WIN32. Le point d'entrée est WinMain() et non main() qui est dans le 'framework win32'...
    Et quel est le rôle des Makefile ??
    De gérer les dépendances entre les fichier et de déclencher la génération du code quand c'est nécessaire.

    http://emmanuel-delahaye.developpez.com/make.htm

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/01/2010, 02h13
  2. [Fait]Comment vérifier l'existence d'un fichier (FSO)
    Par Jean Luc Ravenne dans le forum Contribuez
    Réponses: 11
    Dernier message: 14/09/2007, 21h37
  3. Comment Copier une table dans un fichier?
    Par thx2003 dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/12/2003, 12h09
  4. [TP]comment creer une disquette bootable (les fichiers)
    Par ludovic5532 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 25/10/2003, 18h46
  5. Réponses: 5
    Dernier message: 20/08/2002, 18h01

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