Problèmes d'includes en C
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:
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 !