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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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!!