Bonjour,

Me lançant dans un projet de jeu vidéo, j'ai commencé à écrire du code C en séparant le tout sur plusieus fichiers.
J'ai donc commencé par séparer mon code en pour le moment trois modules (aevilia, utilitaires, et moteur_graphique), chacun avec son .c et son .h
J'ai ensuite rassemblé certaines définitions communes dans un fichier defines.h, qui inclut tous les autres .h, et que chaque .c inclut.
Néanmoins, gcc (je suis sous Linux) m'indique d'abord des implicit declaration, puis des "conflicting declaration", comme s'il réalisait les include APRÈS avoir tout lu.

Voici une copie de mon répertoire de travail : https://dl.dropboxusercontent.com/u/...aevilia.tar.gz

En lançant "make objects/aevilia.o", j'obtiens la sortie suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
=== OBJET objects/aevilia.o ===
 
gcc -Wall -Wextra -L./lib -I./include -c src/aevilia.c -o objects/aevilia.o
src/aevilia.c: In function ‘main’:
src/aevilia.c:42:2: warning: implicit declaration of function ‘initialiser’ [-Wimplicit-function-declaration]
  initialiser(log);
  ^
src/aevilia.c:47:2: warning: implicit declaration of function ‘terminer’ [-Wimplicit-function-declaration]
  terminer(SUCCES);
  ^
src/aevilia.c:36:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
 int main(int argc, char* argv[]) {
              ^
src/aevilia.c:36:26: warning: unused parameter ‘argv’ [-Wunused-parameter]
 int main(int argc, char* argv[]) {
                          ^
src/aevilia.c: At top level:
src/aevilia.c:50:6: warning: conflicting types for ‘initialiser’
 void initialiser(FILE* log) {
      ^
src/aevilia.c:42:2: note: previous implicit declaration of ‘initialiser’ was here
  initialiser(log);
  ^
src/aevilia.c: In function ‘initialiser’:
src/aevilia.c:54:3: warning: implicit declaration of function ‘print’ [-Wimplicit-function-declaration]
   print("Le logging n'a pas pu démarrer !");
   ^
src/aevilia.c:61:2: warning: implicit declaration of function ‘initialiserGraphismes’ [-Wimplicit-function-declaration]
  initialiserGraphismes();
  ^
src/aevilia.c: At top level:
src/aevilia.c:64:6: warning: conflicting types for ‘terminer’
 void terminer(int statut) {
      ^
src/aevilia.c:47:2: note: previous implicit declaration of ‘terminer’ was here
  terminer(SUCCES);
  ^
src/aevilia.c: In function ‘terminer’:
src/aevilia.c:65:2: warning: implicit declaration of function ‘nettoyerGraphismes’ [-Wimplicit-function-declaration]
  nettoyerGraphismes();
  ^
src/aevilia.c:68:17: warning: passing argument 1 of ‘arreterLogging’ from incompatible pointer type
  arreterLogging(log);
                 ^
In file included from src/defines.h:25:0,
                 from src/aevilia.c:31:
src/utilitaires.h:46:6: note: expected ‘struct FILE *’ but argument is of type ‘double (*)(double)int arreterLogging(FILE* log);
      ^
src/aevilia.c: In function ‘main’:
src/aevilia.c:48:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
Je n'ai pas la moindre idée de pourquoi j'ai tous ces warnings de compilation... quelqu'un saurait-il ?
Merci par avance !