Plusieurs fichiers .c [C] - C++ - Programmation
Marsh Posté le 19-06-2002 à 14:38:30
il faut faire un include "tonfichieràinclure" dans celui où tu appelle une fonction de tonfichieràinclure
Marsh Posté le 19-06-2002 à 14:38:54
oula, toi tu commances le C, hein !?
il faut un fichier .h ou tu décris toutes tes fonctions.
Marsh Posté le 19-06-2002 à 14:39:37
pas obligé le .h mais c'est quand même bcp plus propre !
Marsh Posté le 19-06-2002 à 14:40:59
manu025 a écrit a écrit : pas obligé le .h mais c'est quand même bcp plus propre ! |
Donc, si, on va dire que c obligé.
même si les compilo tolèrent ça, c vraiement mauvais d'inclure des .c ou .cpp direct.
Marsh Posté le 19-06-2002 à 14:43:58
Non, c pas ca et je debute dans la C, mais j'ai deja fait pas mal de C++ )
En fait, j'ai inclu tous les .h, mais une erreur de segmentation se produit quand d'un autre fichier .c j'essaie d'appeler une fonction de ce fichier. La fonction est donc reconnu, mais elle se plante, alors que compilees separement tout se passe bien...
Marsh Posté le 19-06-2002 à 14:44:21
Non, c pas ca et je debute dans la C, mais j'ai deja fait pas mal de C++ )
En fait, j'ai inclu tous les .h, mais une erreur de segmentation se produit quand d'un autre fichier .c j'essaie d'appeler une fonction de ce fichier. La fonction est donc reconnu, mais elle se plante, alors que compilees separement tout se passe bien...
Marsh Posté le 19-06-2002 à 14:49:35
Meta_Ours a écrit a écrit : Bonjour, J'ai ecrit plusieurs fichiers en C, qui, compilé separement, fonctionnent tout a fait. Mais, quand je veux appeller une fonction de l'un dans l'autre, alors il me fait systematiquement une erreur de segmentation... Faut-il preciser que la fonction que je veux apeller est dans un autre .c ? si oui, comment ?? Merci ! |
Que veux tu dire par "compilé separement, fonctionnent tout a fait" ?
1) Si tu as plusieurs "main", ca ne peut pas marcher.
2) Si tu n'as pas de fichier "header" (.h) où tu déclares tes fonctions et stuctures, ça peux marcher en faisant des
Code :
|
mais alors, c'est pas conseillé du tout.
Ce que je te recommande de faire, ce sont des librairies :
des groupes de fonctions associés à une des structures spécifiques.
Pour une librairie, tu déclares structures et fonctions dans un .h et le "corps" (code koâ) des fonctions et procédures dans le .c. Tu peux en plus déclarer dans le .c des fonctions et procédures "static"
Code :
|
qui seront des fonctions "cachés" pour un utilisateur de ta librairie.
Une fois ta librarie compilé, tu peux faire un programme C qui y fera appel.
Tu commence par un
Code :
|
tu appels tes diverses fonctions/structures, et tu compiles les tout en spécifiant le "include_path" (les .h) et la "library_path" (.o ou .a des tes librairies préalablement compilés)... Voilou !
Un conseil pour plus tard : Makefile.
Marsh Posté le 19-06-2002 à 14:55:09
bon... j'ai deja fait un makefile... qui compile separement en .o, et je rassemble le tout...
j'ai pas plusieurs main non plus... il me ferait une erreur de lien... mais la c'est a l'execution qu'il me fait une SEGMENTATION FAULT.
Mon prbleme : (au risque de me repeter ) Lorsque j'apelle une fonction d'un autre ficher ( meme apres avoir inclus le .h ), il me fait une erreur de segmentation...
il n'y a pas un truc genre extern ou un truc du style ??
Marsh Posté le 19-06-2002 à 14:56:02
et peut-être que t'as bien une erreur de segmentation !!! genre un pb de malloc non effectué !
Marsh Posté le 19-06-2002 à 14:56:23
Heu balance ton source s'il est pas trop long, par ce que là...
Marsh Posté le 19-06-2002 à 14:56:58
mais les .c fonctionnent correctement compiles separement !
Marsh Posté le 19-06-2002 à 14:57:24
Meta_Ours a écrit a écrit : bon... j'ai deja fait un makefile... qui compile separement en .o, et je rassemble le tout... j'ai pas plusieurs main non plus... il me ferait une erreur de lien... mais la c'est a l'execution qu'il me fait une SEGMENTATION FAULT. Mon prbleme : (au risque de me repeter ) Lorsque j'apelle une fonction d'un autre ficher ( meme apres avoir inclus le .h ), il me fait une erreur de segmentation... il n'y a pas un truc genre extern ou un truc du style ?? |
Si tu copie la fonction "incriminée" dans ton fichier c principal et que tu n'appelle que celle-ci, ça fait quoi ???
Marsh Posté le 19-06-2002 à 14:59:21
tu compiles avec quoi ?
Marsh Posté le 19-06-2002 à 15:01:48
manu025 a écrit a écrit : et peut-être que t'as bien une erreur de segmentation !!! genre un pb de malloc non effectué ! |
ça empêcherai pas de compiler.
Marsh Posté le 19-06-2002 à 15:02:16
je compile avec gcc...
mais en fait laissez tomber, je crois que l'erreur n'est pas ou je la cherche...
J'ai trouve une auter piste
Je vous tiens au courant
Marsh Posté le 19-06-2002 à 15:04:13
zi_ril_wanou a écrit a écrit : Que veux tu dire par "compilé separement, fonctionnent tout a fait" ? 1) Si tu as plusieurs "main", ca ne peut pas marcher. 2) Si tu n'as pas de fichier "header" (.h) où tu déclares tes fonctions et stuctures, ça peux marcher en faisant des
|
Mais, c complètement con ! Ce qu'il veut faire, c pas une dll, c'est un programme tout simple. Tu vas pas faire une dll pour chaque .c séparé qd même. 'faut qu'il arrive à inclure ses fonctions d'un .c à l'autre. C pas la peine de te la pèter avec tes fonctions static, et autre, t hors sujet !
Marsh Posté le 19-06-2002 à 15:04:16
Laisse moi deviner :
Code :
|
Et ca marche pas...
Ben non et c'est normal : il faut passer par des pointeurs.
Marsh Posté le 19-06-2002 à 15:05:43
el_gringo a écrit a écrit : Mais, c complètement con ! Ce qu'il veut faire, c pas une dll, c'est un programme tout simple. Tu vas pas faire une dll pour chaque .c séparé qd même. 'faut qu'il arrive à inclure ses fonctions d'un .c à l'autre. C pas la peine de te la pèter avec tes fonctions static, et autre, t hors sujet ! |
Vi, ben toi on voit que t'as jamais fait de "programmation" de ta vie... Deux trois TP peut être...
Marsh Posté le 19-06-2002 à 15:07:13
zi_ril_wanou a écrit a écrit : Vi, ben toi on voit que t'as jamais fait de "programmation" de ta vie... Deux trois TP peut être... |
Dis pas n'importe quoi !
Pourquoi tu dis ça ? pour te défendre parce que je t'agresse ? (c vrai que je t'agresse grave, ms tu m'énerves !)
Marsh Posté le 19-06-2002 à 15:08:23
FIGHT
Marsh Posté le 19-06-2002 à 15:08:36
el_gringo a écrit a écrit : Dis pas n'importe quoi ! |
Je donne juste quelques informations à la personne pour qu'elle parte du bon pied en C.
Marsh Posté le 19-06-2002 à 15:09:55
manu025 a écrit a écrit : FIGHT |
Je sais pas pourquoi ?!?!?!
Me fait toujours agresser par des ticons !?
edit : aurtograff
Marsh Posté le 19-06-2002 à 15:10:55
zi_ril_wanou a écrit a écrit : Je donne juste quelques informations à la personne pour qu'elle parte du bon pied en C. |
C pas des explications que tu donnes. Tu donnes juste les gros traits, histoire d'essayer de montrer que t fort. Ms c totalement incompréhensible (et inutil) pour un débutant ce que t'as dit.
Marsh Posté le 19-06-2002 à 15:12:23
zi_ril_wanou a écrit a écrit : Je sais pas pourquoi ?!?!?! Me fait toujours agresser par des ticons !? edit : aurtograff |
Peut être parce que t le genre de type qui se prend des baffes. y en a comme ça.
Et forcément, l'agresseur, du point de vue de la victime, est toujours un petit con ! (c vrai quoi, la victime vas pas flatter son boureau non plus ! )
Marsh Posté le 19-06-2002 à 15:13:36
el_gringo a écrit a écrit : C pas des explications que tu donnes. Tu donnes juste les gros traits, histoire d'essayer de montrer que t fort. Ms c totalement incompréhensible (et inutil) pour un débutant ce que t'as dit. |
Je reconnais que je suis pas bon du point de vue pédagogique.
Mais donner la solution tout droit dans le bec (bref faire un truc pour les autres), ça mène à rien. Et dégueulasser un truc pour les autres (include de .c) c'est pire que tout !!!
Marsh Posté le 19-06-2002 à 15:14:58
el_gringo a écrit a écrit : Peut être parce que t le genre de type qui se prend des baffes. y en a comme ça. Et forcément, l'agresseur, du point de vue de la victime, est toujours un petit con ! (c vrai quoi, la victime vas pas flatter son boureau non plus ! ) |
Dis donc tu tiens une sacrée couche toi !!!
Bon allez j'arrète le flood avant qu'antp ne se fâche.
Sur ceux, messieurs, bonne continuation.
Marsh Posté le 19-06-2002 à 15:18:56
zi_ril_wanou a écrit a écrit : Dis donc tu tiens une sacrée couche toi !!! Bon allez j'arrète le flood avant qu'antp ne se fâche. Sur ceux, messieurs, bonne continuation. |
Ouais, j'allais te dire pareil (pour le "on arrête là, ça suffit" ).
Juste, quand tu m'insultes, j'aimerai bien que tu dises pas n'importe quoi, et que tu justifies ce que tu dis, sinon c gratuit, et les insultes gratuites, c pas bien !
A la prochaine ('faudrai que je me mette au Yoga moi qd même d'ici là!)
Marsh Posté le 19-06-2002 à 15:21:52
el_gringo a écrit a écrit : Ouais, j'allais te dire pareil (pour le "on arrête là, ça suffit" ). Juste, quand tu m'insultes, j'aimerai bien que tu dises pas n'importe quoi, et que tu justifies ce que tu dis, sinon c gratuit, et les insultes gratuites, c pas bien ! A la prochaine ('faudrai que je me mette au Yoga moi qd même d'ici là!) |
Dis donc qui a agressé l'autre en premier ???
Allez je te laisse avoir le dernier mot, sinon tu ne vas pas en dormir de la nuit.
(Ah, ça les hormones à la puberté ça les travaille ma bonn'dame)
Marsh Posté le 19-06-2002 à 15:24:56
zi_ril_wanou a écrit a écrit : Dis donc qui a agressé l'autre en premier ??? Allez je te laisse avoir le dernier mot, sinon tu ne vas pas en dormir de la nuit. (Ah, ça les hormones à la puberté ça les travaille ma bonn'dame) |
Ms je t'ai insulté en te disant pourquoi. ça, c correcte, même nécessaire parfois.
Hé, t'aurais pas fait un IUT info à Clermont-Ferrand par hasard ?
Marsh Posté le 19-06-2002 à 15:29:36
el_gringo a écrit a écrit : Ms je t'ai insulté en te disant pourquoi. ça, c correcte, même nécessaire parfois. Hé, t'aurais pas fait un IUT info à Clermont-Ferrand par hasard ? |
Et mais moi je t'ai insulté parce que tu m'as insulté nananèreuh !!!
Pourquoi tant d'agressivité ?
Je ne suis pas très pédagogue, je le reocnnais moi même, alors en quoi viens-tu me traiter de con ?
Qu'est qui te le prouve ?
Et quand bien même, qu'est ce qui te pousse à m'insulter ?
Ca me gave : si tu veux continuer ce combat stérile : blabla ou MP.
P.S: non je n'ai fait ni d'iut, ni aucune étude à Clermont Ferrand.
Marsh Posté le 19-06-2002 à 15:30:57
bah laisse tomber
Mr Gringo est coutumier du fait alors..
on va pas s'en faire pour si peu
LeGreg
Marsh Posté le 19-06-2002 à 15:34:15
legreg a écrit a écrit : bah laisse tomber Mr Gringo est coutumier du fait alors.. on va pas s'en faire pour si peu LeGreg |
Ho, "coutumier", 'faut pas exagèrer. C la 2e fois que je m'emballe sur qqn qui à rien fait ou dit contre moi !
Et puis, pour Juju le barbare, ça m'amusait, c t pas pareil...
Marsh Posté le 19-06-2002 à 15:37:45
el_gringo a écrit a écrit : Ho, "coutumier", 'faut pas exagèrer. C la 2e fois que je m'emballe sur qqn qui à rien fait ou dit contre moi ! Et puis, pour Juju le barbare, ça m'amusait, c t pas pareil... |
Et as tu pensé que je répondais quand il n'y avait que le premier post ???
Le temps d'allumer une clope, de pisser un coup ???
Ah ben non !
Cékilekon ???
Marsh Posté le 19-06-2002 à 15:47:31
zi_ril_wanou a écrit a écrit : Et as tu pensé que je répondais quand il n'y avait que le premier post ??? Le temps d'allumer une clope, de pisser un coup ??? Ah ben non ! Cékilekon ??? |
Chuuut ! on a dit qu'on arrêtait.
(cela dit, je vois pas du tout ou tu veux en venir avec ce que tu me dit là petit bonhomme.)
Marsh Posté le 19-06-2002 à 15:50:12
el_gringo a écrit a écrit : Chuuut ! on a dit qu'on arrêtait. (cela dit, je vois pas du tout ou tu veux en venir avec ce que tu me dit là petit bonhomme.) |
(Passes du premier post au mien directement, et tu comprendras [peut être ???].)
Marsh Posté le 19-06-2002 à 15:50:21
N'empéche que sans aller aussi loin que El gringo, le coup de librairies c un peu prendre un marteau pour écraser une mouche, maintenant c vrai que j'ai pas tout lu et que je connais pas l'empleur du projet de Ours. Quoi? Comment ça je jette de l'huile sur le feu?
Marsh Posté le 19-06-2002 à 15:59:51
letoII a écrit a écrit : N'empéche que sans aller aussi loin que El gringo, le coup de librairies c un peu prendre un marteau pour écraser une mouche, maintenant c vrai que j'ai pas tout lu et que je connais pas l'empleur du projet de Ours. Quoi? Comment ça je jette de l'huile sur le feu? |
Ouahh, qqn qui admet que g pas tous les tors.
ça fait plaisir.
Mais, c vrai que je m'enflamme vite, et on va arrêter là réellement, parce qu'on pourrait continuer vachement longtemps. Je vais pas aller jusqu'a te faire mes excuses, ms bon, on arrête là.
Marsh Posté le 19-06-2002 à 16:01:46
el_gringo a écrit a écrit : Je vais pas aller jusqu'a te faire mes excuses, ms bon, on arrête là. |
Pourquoi pas ???
Tu pourrais, ça ne te rabaisserais pas (bien au contraire), et je n'exulterais pas...
Marsh Posté le 19-06-2002 à 16:30:30
Meta Ours, ça en est où ???
Marsh Posté le 19-06-2002 à 14:37:07
Bonjour,
J'ai ecrit plusieurs fichiers en C, qui, compilé separement, fonctionnent tout a fait.
Mais, quand je veux appeller une fonction de l'un dans l'autre, alors il me fait systematiquement une erreur de segmentation...
Faut-il preciser que la fonction que je veux apeller est dans un autre .c ?
si oui, comment ??
Merci !