Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/07/2006, à 10:01

Yoshiball

[Resolu][Langage C] Appeler une fonction depuis un autre fichier.c

Bonjour,

après quelques mois de non pratique de C, j'essai de m'y remettre un peu. Par ailleurs je fais face à un problème que je ne comprends pas. Je vous explique c'est très simple :

- imaginons que vous aillez deux fichiers .c : main.c et toto.c
- dans toto.c on déclare plusieurs fonctions

Ma question est la suivante :

Comment faire depuis main.c pour utiliser, appeler, des fonctions qui se trouvent dans toto.c?

Y-a-t-il une déclaration à faire? Comment se fait le lien entre main.c et toto.c lors de la compilation?

Merci.

Dernière modification par Yoshiball (Le 27/07/2006, à 10:59)


VIM un éditeur pour la VIe : http://www.vim.org
Ubuntu, une distribution Linux pour tous : http://www.ubuntu.com
Mon espace perso : http://ngressier.developpez.com

Hors ligne

#2 Le 27/07/2006, à 10:17

dylhoxic

Re : [Resolu][Langage C] Appeler une fonction depuis un autre fichier.c

Il me semble qu'il y a plusieurs solutions :

1)

tu déclares dans ton fichier toto.c le prototype de la fonction en question genre :

void foo(int bar);

et dans ton fichier main.c, tu la déclares comme ceci :

extern void foo(int bar);

2)

tu crées un fichier toto.h et tu déclares le protype de la fonction et tu inclus toto.h dans main.c

Pour la compilation : 

gcc -Wall main.c toto.c -o mainprog

a+

Dernière modification par dylhoxic (Le 27/07/2006, à 10:34)


Kubuntu++

Hors ligne

#3 Le 27/07/2006, à 10:22

Yoshiball

Re : [Resolu][Langage C] Appeler une fonction depuis un autre fichier.c

Le toto.h (2ème méthode) est à déclaré dans toto.c et dans main.c ?

A la compilation il ne faut pas juste mettre main.c ? le compilateur ne fait pas le lien avec toto.c ?

Dans si 20 fichiers .c il faut mettre les 20 quand je compile? hmm


VIM un éditeur pour la VIe : http://www.vim.org
Ubuntu, une distribution Linux pour tous : http://www.ubuntu.com
Mon espace perso : http://ngressier.developpez.com

Hors ligne

#4 Le 27/07/2006, à 10:38

dylhoxic

Re : [Resolu][Langage C] Appeler une fonction depuis un autre fichier.c

Yoshiball a écrit :

Le toto.h (2ème méthode) est à déclaré dans toto.c et dans main.c ?

Ca dépend un peu de tes fonctions et de ce que tu déclares dans ton fichier toto.h. Si tu déclares seulement des fonctions indépendantes qui seront appelés dans main.c, alors déclare le seulement dans ce fichier. Le plus propre et le plus sur serait quand même de le déclarer dans les deux...

A la compilation il ne faut pas juste mettre main.c ? le compilateur ne fait pas le lien avec toto.c ?

Non

Dans si 20 fichiers .c il faut mettre les 20 quand je compile? hmm

Bah oui et c'est pour ça que la compilation à la main est pas souvent utilisé. Le plus courant c'est le recours à un Makefile.

Dernière modification par dylhoxic (Le 27/07/2006, à 10:41)


Kubuntu++

Hors ligne

#5 Le 27/07/2006, à 10:58

Yoshiball

Re : [Resolu][Langage C] Appeler une fonction depuis un autre fichier.c

Bon j'ai fait une petite recherche sur le Makefile et c'est bon j'ai bien compris comment ça fonctionner, la liaison entre les fichiers, l'appel de la fonction, etc...

Merci à toi pour ton aide. wink


VIM un éditeur pour la VIe : http://www.vim.org
Ubuntu, une distribution Linux pour tous : http://www.ubuntu.com
Mon espace perso : http://ngressier.developpez.com

Hors ligne

#6 Le 02/08/2006, à 09:16

lost-in-the-shell

Re : [Resolu][Langage C] Appeler une fonction depuis un autre fichier.c

Ne pas oublier le :

#ifndef MACHIN_H
#define MACHIN_H

#endif

Pour éviter la multi-inclusion.


Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.

Hors ligne

#7 Le 03/08/2006, à 22:46

Fanof

Re : [Resolu][Langage C] Appeler une fonction depuis un autre fichier.c

http://www.siteduzero.com/tuto-3-3040-1-la-programmation-modulaire.html

Ils expliquent très bien wink .


Sénèque : "Ce n'est pas parce que c'est difficile que nous ne le faisons pas ; c'est parce que nous ne le faisons pas que c'est difficile."

Hors ligne