251Fermer253
FarewellLe 21/04/2009 à 13:39
Sally -> okok, je vois bien la distinction que tu fais quand même. grin Arrêtons-là si tu veux grin

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.