struct manche touche[12][9][3];
ne devrait pas être dans le .h mais dans un .c : Le .h ne devrait contenir que des déclarations de type (comme celle de struct manche), des prototypes de fonctions, des définitions de constantes... mais pas de définition de variables ni de code exécutable.
On aura, par exemple, quelque chose du genre :
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
| //head.h ------------------
struct manche
{
bool corde[6];
char *texte;
};
#define CROIX ...
#define VIDE...
//positions_accords.h-----------------
#include "head.h"
void DoMajeur(struct manche touche [][9][3]);
//positions_accords.c----------------
#include "positions_accords.h"
void DoMajeur(struct manche touche [][9][3])
{
// -- Do --
// Majeur
touche[1][1][1].corde[1]=CROIX;
touche[1][1][1].corde[2]=3;
touche[1][1][1].corde[3]=2;
...
}
// main.c------------------------
#include "positions_accords.h"
...fonc(struct manche const t [][9][3])
{... t[i][j][k]...}
int main (void)
{
struct manche touche[12][9][3];
DoMajeur(touche);
...
fonc(touche);
...
} |
Attention, les indices des tableaux commencent à 0, pas à 1 et se terminent à "nombre d'éléments"-1
Partager