Problème étrange d'inclusion de header

Problème étrange d'inclusion de header - C - Programmation

Marsh Posté le 12-11-2011 à 22:10:36    

Bonjour,
 
Je code sous codeblocks, et j'ai un problème assez inexplicable. Lorsque je faisais des programmes sur console, l'inclusion des .h n'avait aucun problème, mais lorsque je fais des programmes en SDL, il ne reconnait plus aucune fonction déclarées dans le .h :  
 
main.c

Code :
  1. #include <SDL.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include "test.h"
  6. int main ( int argc, char** argv )
  7. {
  8.     demo();
  9.     SDL_Init(SDL_INIT_VIDEO);
  10.     SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
  11.     SDL_Quit();
  12.     return EXIT_SUCCESS;
  13. }


 
test.h

Code :
  1. #ifndef TEST_H
  2. #define TEST_H
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. void demo();
  7. #endif


 
test.c

Code :
  1. #include "test.h"
  2. void demo(){
  3. int i;
  4. }


 
Quand je compile, j'obtiens l'erreur "In function SDL_main, undefined reference to demo()"
 
Cependant, si dans le fichier main.c je remplace #include "test.h" par #include "test.c", cela compile correctement et je n'ai plus d'erreur. Inclure un .c me semble quand même étrange, donc quelqu'un n'aurait pas une idée d'où vient le problème d'inclusion ?
 
Merci !

Reply

Marsh Posté le 12-11-2011 à 22:10:36   

Reply

Marsh Posté le 13-11-2011 à 02:09:39    

extern void demo() dans ton main pour préciser que la fonction est sur un autre fichier et jamais d'include de fichier *.c me semble-t-il :d


Message édité par Terminapor le 13-11-2011 à 02:10:00

---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 13-11-2011 à 09:01:03    


 
 
Je ne pense pas que ca vienne de là, mais si SDL.h définit TEST_H pour je ne sais quelle raison, ce test " #ifndef TEST_H " ne passera pas.
 
Essaie dans un premier temps de remplacer #ifndef TEST_H par #ifndef __MYTEST_H__ ( n'oublie pas de changer le define en dessous également ).

Message cité 1 fois
Message édité par xilebo le 13-11-2011 à 09:01:21
Reply

Marsh Posté le 13-11-2011 à 10:54:02    

xilebo a écrit :

Je ne pense pas que ca vienne de là, mais si SDL.h définit TEST_H pour je ne sais quelle raison, ce test " #ifndef TEST_H " ne passera pas.
 
Essaie dans un premier temps de remplacer #ifndef TEST_H par #ifndef __MYTEST_H__ ( n'oublie pas de changer le define en dessous également ).


 
Non, ça ne vient pas de là. De plus un _ suivit d'un _ est un identificateur réservé.
 
boboh0 > Es-tu sûr de compiler en C et pas en C++ ?

Reply

Sujets relatifs:

Leave a Replay

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