Projet C

Projet C - C - Programmation

Marsh Posté le 07-12-2009 à 14:07:00    

Bonjour,  
 
Je n'arrive pas à compiler un mini projet en C avec 3 fichiers. J'utilise Code::block sous Windows XP.
 
- main.c

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "fonctions.h"
  4. int main()
  5. {
  6.     affichage(2);
  7.     printf("Hello world!\n" );
  8.     return 0;
  9. }


 
 
- fonctions.h

Code :
  1. #ifndef FONCTIONS_H_INCLUDED
  2. #define FONCTIONS_H_INCLUDED
  3. void affichage (int i);
  4. #endif // FONCTIONS_H_INCLUDED


 
- fonctions.c  

Code :
  1. #include "fonctions.h"
  2. void affichage (int i)
  3. {
  4.     printf("c mon affichage " );
  5. }


 
 
J'obtiens le message dans l'onglet Build Message :  
 
obj\Debug\main.o||In function `main':|
C:\Documents and Settings\Consultant.JURA-LERECULET\Mes documents\projetVide\vide\main.c|7|undefined reference to `_affichage'|
||=== Build finished: 1 errors, 0 warnings ===|
 
Le prototype de la fonction affichage est bien écrit mais main.c n'arrive pas à récupérer la définition (si je me trompe pas) dans le fichier fonctions.c
 
Est ce que vous avez une idée du pourquoi ?  
 
Sur code:block, la fonction de complémentation est présente. Lorsque je tape les premières lettres "affi" par exemple, la fonction "affichage" est reconnu par Code:block.  
 
Je pense donc que j'ai bien fais les inclusions  
#include "fonctions.h" dans le fichier main.c et fonctions.c

Reply

Marsh Posté le 07-12-2009 à 14:07:00   

Reply

Marsh Posté le 07-12-2009 à 14:45:16    

Apparemment c'est à l'édition des liens que ça coince.
Soit 'fonctions.c' n'est pas compilé (devrait produire un 'fonctions.o' de la même manière que le 'main.o') ou soit le "linker" n'est pas renseigné sur la présence de 'fonctions.o'.

Reply

Marsh Posté le 07-12-2009 à 15:49:47    

Je te remercie, ummon.  
Dans le repertoire du projet, Code:block a créé un repertoire obj\Debug. Dans ce répertoire, il n'y avait que main.o.  
 
J'ai résolu mon problème en allant dans les propriétés du fichiers fonctions.c (clique droit => properties) dans Code:block  
 
Dans l'onglet Build, j'ai coché la case "Debug" dans la section "Belong in targets" comme c'était le cas pour main.c.
 
Je comprends pas trop cette notion de Debug dans code:block mais maintenant le fichier fonctions.o est maintenant créé, et ma mini appli fonctionne.
 
Merci beaucoup

Reply

Marsh Posté le 07-12-2009 à 18:12:10    

Salut
Code blocks permet par défaut de produire 2 versions de ton programme qui sont debug et release. Cela permet de compiler avec certaines options lorsque tu travailles sur le code (debug) puis lorsque tu génères la version finale avec d'autres options. Donc si tu reviens sur ton code après avoir générer la release, tu n'as pas tout à reparamétrer, juste à sélectionner "debug".
Chaque fichier que tu ajoutes au projet peut être intégré ou non au différentes versions. Par exemple un fichier peut être compilé en debug mais pas release. Je pense que ton fichier fonctions.c n'était pas inclus dans la génération de la version debug (et peut-être pas non plus dans la release).


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 29-12-2009 à 00:52:02    

Bonjour à tous,
 
Je suis nouvelle dans le forum.
 
j'aimerai solliciter votre aide pour la lecture d'un programme.  
 
Il s'agit en fait des écritures du genre:  
" #pragma omp parallel default(none) \
shared(f,g,h,im,jm,km,is,js,ks,iv,jv,stdout,par,\
iposc0,iposc1,iposc2,iposc3,iposc4,iposc5,iposc6,b,bnum,v,vnum,\
c0,c1,c2,c3,c4,c5,c6,c0num,c1num,c2num,c3num,c4num,c5num,c6num,\
sigmac,Lc,P,xstart)
"
 
((f,g,h,im,jm,km,is,js,ks,iv,jv,stdout,par
iposc0,iposc1,iposc2,iposc3,iposc4,iposc5,iposc6,b,bnum,v,vnum
c0,c1,c2,c3,c4,c5,c6,c0num,c1num,c2num,c3num,c4num,c5num,c6num
sigmac,Lc,P,xstart))
 
sont des paramètres que je connais bien.
 
Mais que veut dire: "#pragma omp parallel default(none) \
shared(...\
...\
...\
...)" ?
 
 
Merci.

Reply

Marsh Posté le 29-12-2009 à 07:51:54    

alouet : t'as le droit de creer un sujet pour ta question qui n'a aucun rapport avec le fil en cours ...
Pour te repodnre, il s'agit de primitive de parallelisation openMP

Reply

Marsh Posté le 29-12-2009 à 16:27:03    

Ok,
Merci Joel

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed