Créer un projet en c avec Kate

Résolu/Fermé
scheme Messages postés 50 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 18 mai 2009 - 25 janv. 2009 à 18:56
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 26 janv. 2009 à 00:25
Bonjour à tous, j'aimerais créer un projet en C sous Kate. J'aimerais en fait séparer les fonctions d'un même programme en différents fichiers, comme ceci:

https://user.oc-static.com/files/8001_9000/8068.png

J'ai tenté de créer un dossier, puis d'écrire mes différentes fonctions dans des fichiers différents, et les headers des fonctions de mes fichiers dans d'autres fichiers. Puis j'ai inclus les noms des headers dans les directives de préprocesseur de mon fichier main.c.

Mais comme je m'y attendais, à la compilation du fichier contenant mon fichier main.c mes fonctions ne sont pas inclues comme elles le devraient, donc elles ne sont pas lues par l'ordinateur avant d' exécuter la fonction main, donc je reçois un message d'erreur m'indiquant "undefined reference to "nom_de_ma_fonction" ". Savez-vous d'où vient le problème et comment le résoudre pour parvenir à mon but ?

Merci d'avance :)
A voir également:

8 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
25 janv. 2009 à 19:45
Re,

Compilation
cd /home/scheme/ triple
gcc -c triple.c main.c
gcc triple.o main.o -o progtriple
Exécution
./progtriple
1
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
25 janv. 2009 à 19:02
Salut,

Un problème similaire on a résolu ici http://www.commentcamarche.net/forum/affich 10663818 probleme lecture dans un fichier en c?#9

Mais j'ai eu besoin de fichiers pour le faire ;-)
0
scheme Messages postés 50 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 18 mai 2009 3
25 janv. 2009 à 19:41
Merci de me répondre aussi vite :)

Admettons que j'ai créé un dossier "triple" dans /home/scheme/

Dedans j'ai placé 3 fichiers: main.c, triple.h et triple.c

main.c:

#include <stdio.h>
#include <stdlib.h>
#include "triple.h"

long triple(long nombre);

int main(int argc, char *argv[])
{
printf("%ld\n", triple(5));
return 0;
}

triphe.h:

long triple(long nombre);

triple.c:

long triple(long nombre)
{
return 3*nombre;
}
0
scheme Messages postés 50 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 18 mai 2009 3
25 janv. 2009 à 20:16
Merci beaucoup!

Si j'ai bien compris il faut d'abord compiler tous les fichiers .c, et une fois qu'on a tous les fichiers binaires on les linke en donnant un nom à notre programme ?

Pourquoi est-ce nécessaire de séparer la compilation en 2 étapes ?

edit: je viens de voir qu'on peut réduire la compilation en 1 étape, avec gcc main.c triple.c -o progtriple

c'est donc toi qui fait le choix de la séparer en 2 étapes, pourrais-tu me dire pourquoi?

Merci encore de ton aide :)

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
25 janv. 2009 à 20:36
Re,

Au début tu étais bloqué ;-)
Savez-vous d'où vient le problème et comment le résoudre pour parvenir à mon but ?

Ensuite ma réponse t'as permis de comprendre par toi même ;-) et la satisfaction est plus grande ;-))

edit: je viens de voir qu'on peut réduire la compilation en 1 étape, avec gcc main.c triple.c -o progtriple

c'est donc toi qui fait le choix de la séparer en 2 étapes, pourrais-tu me dire pourquoi?


Maintenant tu comprends pourquoi? ;-)

Tu peux allez encore plus loin, et créer un fichier Makefile
0
scheme Messages postés 50 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 18 mai 2009 3
25 janv. 2009 à 23:20
C'était uniquement pour faciliter ma compréhension? :D

Je ne vois vraiment aucun autre avantage^^

Merci encore de ton attention
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
25 janv. 2009 à 23:25
Re,

Où et quand j'ai dit que je la préfères?

Suite à ton message initial, je ne pouvais pas savoir à quelle manière je dois le faire pour t'aider tout simplement.
Donc j'ai choisi la version détaillée, pas à pas.

Maintenant si tu n'est pas content, alors la prochaine fois je te donnerai une réponse à la manière Perl et tu verras ;-DDD




0
scheme Messages postés 50 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 18 mai 2009 3
26 janv. 2009 à 00:24
C'est moi qui l'ai déduit car j'ai vu que sur l'autre topic d'aide, tu avais également utilisé l'argument -c, j'ai alors pensé que tu l'utilisais tout le temps :p
Maintenant je connais la raison, et elle est effectivement excellente =)

Je suis très content de l'aide que tu m'as apporté =)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
26 janv. 2009 à 00:25
Re,

j'ai alors pensé que tu l'utilisais tout le temps :p
Mais non, je suis un sacré paresseux ;-))
0