Sally -> okok, je vois bien la distinction que tu fais quand même.

Arrêtons-là si tu veux
Lionel -> ok :
vars.h :
struct Misc
{
WIN_RECT Curs;
short CursModePlane0;
short CursModePlane1;
...
};
extern struct Misc DrawingData;
J'arrive pas à déclarer le type de la structure et le fait qu'elle soit "extern" simultanément... c'est pas ma faute à moi comme dirait l'autre, j'ai essayé bien des choses mais sûrement pas la bonne ...
ensuite, dans main(), j'ai l'initialisation de la structure :
struct Misc DrawingData = //default value.
{
{LCD_WIDTH/2,LCD_HEIGHT/2,LCD_WIDTH/2,LCD_HEIGHT/2},
A_XOR,A_XOR,A_NORMAL,A_NORMAL,A_NORMAL,A_NORMAL,
A_NORMAL,A_NORMAL,A_NORMAL,A_NORMAL,A_NORMAL,A_NORMAL,
TOOL_DOT,CURSOR_0,FLAGS_DEFAULT,CIRCLE_RADIUS,ELLIPSE_AXE_1,ELLIPSE_AXE_2,{{0,0,239,127}}
};
Et enfin, je l'utilise dans tools.c, après avoir inclus vars.h :
void DispRectangle(void* Planes)
{
short TmpX0 = DrawingData.Curs.x0;
short TmpY0 = DrawingData.Curs.y0;
if (TmpX0 > DrawingData.Curs.x1)
{
DrawingData.Curs.x0 = DrawingData.Curs.x1;
DrawingData.Curs.x1 = TmpX0;
}
if (TmpY0 > DrawingData.Curs.y1)
{
DrawingData.Curs.y0 = DrawingData.Curs.y1;
DrawingData.Curs.y1 = TmpY0;
}
PortSetPlane(Planes);
DrawClipRect(&DrawingData.Curs,&DrawingData.Clip,DrawingData.RectangleModePlane0);
PortSetPlane(Planes+LCD_SIZE);
DrawClipRect(&DrawingData.Curs,&DrawingData.Clip,DrawingData.RectangleModePlane1);
}
et pareil, je veux faire de PlanesPtr une variable globale au programme, sans la passer en variable globale (déclarée avant la définition de main), pour ne pas l'avoir en bss.
Dans le projet, j'ai spécifié que les BSS soivent être mergées avec les sections de données. En l'état actuel, ça compile sans warnings (si je ne spécifie pas -mpcrel). J'ai les options par défaut pour tous les programmes (compilateur et assembleur) de GCC4TI.