une structure en paramètre de fonction
Bonjour,
ça fait pratiquement tte l'après-midi que j'essaie de débugger mon programme mais en vain! voici le code:
Dans un fichier.h:
Code:
1 2 3 4 5 6 7
|
extern struct Liste {
char ss_Liste[4][21];
} LISTE;
extern const char Sous_MENU_LISTE[18][21] ; |
Dans un fichier.c:
Code:
1 2 3 4 5 6 7 8
| void Affichage_structure_chaine_CGRAM_DDRAM ( Liste structure , unsigned char adr_ecran)
{
mLCDPutCmd(adr_ecran); // c'est une macro permettant d'afficher sur un LCD à la position voulu sur l'écran , elle est déclarée ailleurs dans le projet (en global)..
pointeur_ss_menu = &structure; // il pointe sur la structure de chaine de char à afficher, il est déclaré ailleurs dans le projet (en global)..
} |
en fait j'ai créé un sous menu qui contient 18 lignes de topics, et vu que mon LCD est un 4*20alors j'ai créé la structure qui prendra à chaque fois 4 éléments pour les envoyé par l'intermédiaire de la fonction d'affichage sur l'écran. voici le code de la fonction qui permet d'attribuer à cette structure le sous menu:
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 54 55 56 57 58 59
|
/*****************************************************************************
* Fonction: Attrib_Liste_Sous_MENU()
* entrees: int compteur de positionnement, unsigned int direction (haut ou bas)
* sorties: pointeur sur les 4 lignes de char à afficher
*****************************************************************************/
struct * Attrib_Liste_Sous_MENU(int cnt_pos_ss_menu, unsigned int direction){
unsigned char index;
unsigned char ligne_ecran;
unsigned char colonne_ecran;
int increment_pos_ss_menu;
unsigned char nb_lignes_clignotement;
int Bouton;
if (BtnIsPressed(Bp_DEFILER_HAUT)) {
Bouton = Bp_DEFILER_HAUT;
}
else if (BtnIsPressed(Bp_DEFILER_BAS)) {
Bouton = Bp_DEFILER_BAS;
}
direction = _button_press.bBouton ;
switch (index){
case 1: case 4: case 8: case 10: case 14: case 16:
increment_pos_ss_menu = 2;
nb_lignes_clignotement = 2;
break;
default:
increment_pos_ss_menu = 1;
nb_lignes_clignotement = 1;
break;
}
switch(direction) {
case Bp_DEFILER_HAUT:
if (cnt_pos_ss_menu>0){
cnt_pos_ss_menu - increment_pos_ss_menu;
}else {
cnt_pos_ss_menu = 17;
}
case Bp_DEFILER_BAS:
if (cnt_pos_ss_menu<17){
cnt_pos_ss_menu + increment_pos_ss_menu;
}else {
cnt_pos_ss_menu = 0;
}
}
for (ligne_ecran= 0; ligne_ecran <=3 ; ligne_ecran++) {
for (colonne_ecran= 0; colonne_ecran <=21 ; colonne_ecran++) {
LISTE.ss_Liste[ligne_ecran][colonne_ecran] = Sous_MENU_LISTE[cnt_pos_ss_menu+ligne_ecran ][colonne_ecran];
}
}
pointeur_ss_menu = &LISTE;
return pointeur_ss_menu;
} |
si vs n'arrivez pas à interpreter des ligne c'est normal car les détails figurent ailleurs concernant les macros que j'utilise..mais l'essenciel c'est que le compilateur m'envoie cette erreur: "error: syntax error before 'structure'", erreur correspondant au paramètre d'entrée de la fonction d'affichage.
ps: - je travaille sur un PIC24FJ128GA010 et j'utilise la version8.10 de MPLAB
- j'ai déjà essayé de mettre "struct" à la place de "Liste" dans le paramètre d'entrée de la fonction d'affichage, mais ça ne marche pas non plus.
merci de m'aider pcq je ne vois plus rien!!