quand dans un fichier.c tu fait
le préprocesseur remplace cette ligne par le contenu de fichier.h
si tu a deux fichier.c comme ça :
Code:
#include "fichier.h"
int UneFonction(int truc) {
return K[truc];
}
Code:
#include "fichier.h"
int UneAutreFonction(int autretruc) {
return K[1+autretruc];
}
et un fichier.h comme ça :
alors une fois le préprocesseur passé, les fichiers deviennent :
Code:
const int K[]={1,2}
int UneFonction(int truc) {
return K[truc];
}
Code:
const int K[]={1,2}
int UneAutreFonction(int autretruc) {
return K[1+autretruc];
}
une fois les deux fichiers compilé, le tableau est défini dans les deux fichiers.o et après le linker rale, car il à deux définition du tableau.
la première solution, c'est de dire dans le fichier.h ''ceci est un tableau qui sera utilisé et défini que pour le fichier courant'', la deuxième c'est de dire dans le fichier.h ''Il y a un tableau d'entiers constants qui est défini quelque part que vous pouvez utiliser'' et de définir ce tableau dans un seul fichier.c