Créer un projet en c avec Kate
Résolu
scheme
Messages postés
50
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
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 :)
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:
- Créer un projet en c avec Kate
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
8 réponses
Re,
Compilation
Compilation
cd /home/scheme/ triple gcc -c triple.c main.c gcc triple.o main.o -o progtripleExécution
./progtriple
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 ;-)
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 ;-)
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;
}
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;
}
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 :)
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 :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
C'était uniquement pour faciliter ma compréhension? :D
Je ne vois vraiment aucun autre avantage^^
Merci encore de ton attention
Je ne vois vraiment aucun autre avantage^^
Merci encore de ton attention
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
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