Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1155 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] Plusieurs fichiers .c

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[C] Plusieurs fichiers .c

n°162500
Meta_Ours
Posté le 19-06-2002 à 14:37:07  profilanswer
 

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 !

mood
Publicité
Posté le 19-06-2002 à 14:37:07  profilanswer
 

n°162503
manu025
Posté le 19-06-2002 à 14:38:30  profilanswer
 

il faut faire un include "tonfichieràinclure" dans celui où tu appelle une fonction de tonfichieràinclure


---------------
-@- When code matters more than commercials -@-
n°162504
El_gringo
Posté le 19-06-2002 à 14:38:54  profilanswer
 

oula, toi tu commances le C, hein !?
il faut un fichier .h ou tu décris toutes tes fonctions.

n°162507
manu025
Posté le 19-06-2002 à 14:39:37  profilanswer
 

pas obligé le .h mais c'est quand même bcp plus propre !  :D


---------------
-@- When code matters more than commercials -@-
n°162510
El_gringo
Posté le 19-06-2002 à 14:40:59  profilanswer
 

manu025 a écrit a écrit :

pas obligé le .h mais c'est quand même bcp plus propre !  :D  




 
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.

n°162513
Meta_Ours
Posté le 19-06-2002 à 14:43:58  profilanswer
 

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...

n°162514
Meta_Ours
Posté le 19-06-2002 à 14:44:21  profilanswer
 

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...

n°162518
zi_ril_wan​ou
Posté le 19-06-2002 à 14:49:35  profilanswer
 

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 :
  1. #include "toto.c"


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 :
  1. static int calcul(int* intptr)
  2. {
  3. }


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 :
  1. #include "ma_librairie.h"


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.  ;)


Message édité par zi_ril_wanou le 19-06-2002 à 14:51:29

---------------
Get the Cooool... Get the cool shoe-shine !
n°162522
Meta_Ours
Posté le 19-06-2002 à 14:55:09  profilanswer
 

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 ??

n°162526
manu025
Posté le 19-06-2002 à 14:56:02  profilanswer
 

et peut-être que t'as bien une erreur de segmentation !!! genre un pb de malloc non effectué !


---------------
-@- When code matters more than commercials -@-
mood
Publicité
Posté le 19-06-2002 à 14:56:02  profilanswer
 

n°162527
LetoII
Le dormeur doit se réveiller
Posté le 19-06-2002 à 14:56:23  profilanswer
 

Heu balance ton source s'il est pas trop long, par ce que là...


---------------
Le Tyran
n°162528
Meta_Ours
Posté le 19-06-2002 à 14:56:58  profilanswer
 

mais les .c fonctionnent correctement compiles separement !

n°162529
zi_ril_wan​ou
Posté le 19-06-2002 à 14:57:24  profilanswer
 

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 ???


---------------
Get the Cooool... Get the cool shoe-shine !
n°162536
manu025
Posté le 19-06-2002 à 14:59:21  profilanswer
 

tu compiles avec quoi ?


---------------
-@- When code matters more than commercials -@-
n°162540
El_gringo
Posté le 19-06-2002 à 15:01:48  profilanswer
 

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.

n°162541
Meta_Ours
Posté le 19-06-2002 à 15:02:16  profilanswer
 

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 :)

n°162546
El_gringo
Posté le 19-06-2002 à 15:04:13  profilanswer
 

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

Code :
  1. #include "toto.c"


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 :
  1. static int calcul(int* intptr)
  2. {
  3. }


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 :
  1. #include "ma_librairie.h"


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.  ;)  




 
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 !

n°162547
zi_ril_wan​ou
Posté le 19-06-2002 à 15:04:16  profilanswer
 

Laisse moi deviner :  

Code :
  1. /*librairie toto*/
  2. /*toto.h*/
  3. #include <stdio.h>
  4. void ajouteUnAI(int i);
  5. /*toto.c*/
  6. #include "toto.h"
  7. void ajouteUnAI(int i)
  8. {
  9. i++;
  10. }
  11. /*Programme principal*/
  12. #include <stdio.h>
  13. #include "toto.h"
  14. main()
  15. {
  16. int j=0;
  17. ajouteUnAI(j);
  18. }


 
Et ca marche pas...
Ben non et c'est normal : il faut passer par des pointeurs.


---------------
Get the Cooool... Get the cool shoe-shine !
n°162551
zi_ril_wan​ou
Posté le 19-06-2002 à 15:05:43  profilanswer
 

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...


---------------
Get the Cooool... Get the cool shoe-shine !
n°162557
El_gringo
Posté le 19-06-2002 à 15:07:13  profilanswer
 

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 !)


Message édité par El_gringo le 19-06-2002 à 15:08:35
n°162561
manu025
Posté le 19-06-2002 à 15:08:23  profilanswer
 

FIGHT  :gun:  
 :D  :D  :D  :D  :D  :D


---------------
-@- When code matters more than commercials -@-
n°162563
zi_ril_wan​ou
Posté le 19-06-2002 à 15:08:36  profilanswer
 

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.


---------------
Get the Cooool... Get the cool shoe-shine !
n°162567
zi_ril_wan​ou
Posté le 19-06-2002 à 15:09:55  profilanswer
 

manu025 a écrit a écrit :

FIGHT  :gun:  
 :D  :D  :D  :D  :D  :D  




 
Je sais pas pourquoi ?!?!?!
Me fait toujours agresser par des ticons !?  :D
 
edit : aurtograff


Message édité par zi_ril_wanou le 19-06-2002 à 15:10:26

---------------
Get the Cooool... Get the cool shoe-shine !
n°162570
El_gringo
Posté le 19-06-2002 à 15:10:55  profilanswer
 

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.

n°162575
El_gringo
Posté le 19-06-2002 à 15:12:23  profilanswer
 

zi_ril_wanou a écrit a écrit :

 
 
Je sais pas pourquoi ?!?!?!
Me fait toujours agresser par des ticons !?  :D
 
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 ! :D (c vrai quoi, la victime vas pas flatter son boureau non plus ! :D)


Message édité par El_gringo le 19-06-2002 à 15:13:15
n°162579
zi_ril_wan​ou
Posté le 19-06-2002 à 15:13:36  profilanswer
 

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 !!!


---------------
Get the Cooool... Get the cool shoe-shine !
n°162584
zi_ril_wan​ou
Posté le 19-06-2002 à 15:14:58  profilanswer
 

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 ! :D (c vrai quoi, la victime vas pas flatter son boureau non plus ! :D)  




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.


---------------
Get the Cooool... Get the cool shoe-shine !
n°162589
El_gringo
Posté le 19-06-2002 à 15:18:56  profilanswer
 

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 ! :non:  
A la prochaine ('faudrai que je me mette au Yoga moi qd même d'ici là!)

n°162592
zi_ril_wan​ou
Posté le 19-06-2002 à 15:21:52  profilanswer
 

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 ! :non:  
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.  :sarcastic:  
(Ah, ça les hormones à la puberté ça les travaille ma bonn'dame)


---------------
Get the Cooool... Get the cool shoe-shine !
n°162596
El_gringo
Posté le 19-06-2002 à 15:24:56  profilanswer
 

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.  :sarcastic:  
(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 ?


Message édité par El_gringo le 19-06-2002 à 15:25:13
n°162603
zi_ril_wan​ou
Posté le 19-06-2002 à 15:29:36  profilanswer
 

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.


Message édité par zi_ril_wanou le 19-06-2002 à 15:30:17

---------------
Get the Cooool... Get the cool shoe-shine !
n°162607
LeGreg
Posté le 19-06-2002 à 15:30:57  profilanswer
 

bah laisse tomber
 
Mr Gringo est coutumier du fait alors..
on va pas s'en faire pour si peu
 
LeGreg

n°162609
El_gringo
Posté le 19-06-2002 à 15:34:15  profilanswer
 

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...

n°162613
zi_ril_wan​ou
Posté le 19-06-2002 à 15:37:45  profilanswer
 

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 ???


---------------
Get the Cooool... Get the cool shoe-shine !
n°162624
El_gringo
Posté le 19-06-2002 à 15:47:31  profilanswer
 

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.)

n°162630
zi_ril_wan​ou
Posté le 19-06-2002 à 15:50:12  profilanswer
 

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 ???].)


---------------
Get the Cooool... Get the cool shoe-shine !
n°162632
LetoII
Le dormeur doit se réveiller
Posté le 19-06-2002 à 15:50:21  profilanswer
 

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?  :sarcastic:


---------------
Le Tyran
n°162659
El_gringo
Posté le 19-06-2002 à 15:59:51  profilanswer
 

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?  :sarcastic:  




 
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à. :hello:

n°162662
zi_ril_wan​ou
Posté le 19-06-2002 à 16:01:46  profilanswer
 

el_gringo a écrit a écrit :

 
Je vais pas aller jusqu'a te faire mes excuses, ms bon, on arrête là. :hello:  




Pourquoi pas ???
Tu pourrais, ça ne te rabaisserais pas (bien au contraire), et je n'exulterais pas...


---------------
Get the Cooool... Get the cool shoe-shine !
n°162686
zi_ril_wan​ou
Posté le 19-06-2002 à 16:30:30  profilanswer
 

Meta Ours, ça en est où ???


---------------
Get the Cooool... Get the cool shoe-shine !
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] Plusieurs fichiers .c

 

Sujets relatifs
Lister les fichiers d'un repertoire en Pascal ![PHP] Comment faire pour afficher sur plusieurs pages
Backup et récupération de plusieurs bases de donnéesForcer IE a ouvrir des fichiers Word par ..justement..Word ?
[PHP & MySQL] Plusieurs requetesC/C++ Windows: Fichiers de resources
[PHP] prob avec upload e fichiers(images) et la variable $_FILESPHP retrouver la liste des fichiers contenus dans un répertertoire ?
faire un lien avec plusieurs variables[PASCAL][newbi] Lecture de Fichiers/Creation
Plus de sujets relatifs à : [C] Plusieurs fichiers .c


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR