1

Premier pb: je fais un tableau de la facon suivante:
unsigned int Tableau[90][120] dans une fonction void PlacePlayer(void)
Je comile et là ILLEGAL INSTRUCTION ou des foi: MEMORY
Cette déclaration je la met en dehors d'une fonction et miracle ca marche. Pourtant on m'avais dit ke les varaibles globales prenaient plus de place que celle dans les fonctions.C vrai?
Ensuite est il possible pour une foncion de faire passer un nombre illimité de paramètres: par ex: Fct1(PAram1,Pram2) peut être aussi appelé comme ca: Fct2(param1,param2,param3). En vBasic fo utiliser PAramArray mais en c g po trouvé.
Thanks et bravo si vs avez cmpris

2

Hard_disk a écrit :
Premier pb: je fais un tableau de la facon suivante:
unsigned int Tableau[90][120] dans une fonction void PlacePlayer(void)
Je comile et là ILLEGAL INSTRUCTION ou des foi: MEMORY Cette déclaration je la met en dehors d'une fonction et miracle ca marche.

Tu fais déborder la pile.
Pourtant on m'avais dit ke les varaibles globales prenaient plus de place que celle dans les fonctions.C vrai?

Oui. Et si ça marche, c'est justement parce que toute la place est réservée dans le programme, et donc tu ne débordes plus la pile.
Mais ce qu'il faut faire, c'est:
unsigned int (*Tableau)[120] = malloc((120*90)<<1);
Ensuite est il possible pour une foncion de faire passer un nombre illimité de paramètres: par ex: Fct1(PAram1,Pram2) peut être aussi appelé comme ca: Fct2(param1,param2,param3). En vBasic fo utiliser PAramArray mais en c g po trouvé.

void Fct1(int nparams,...) (oui, les points de suspension sont à laisser tels quels!)
Ensuite tu utilises stdarg.h.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Ton premier probleme est simple: ton tableau fait 90*120*2 = 21600 octets./
Or, la pile est limite a moins de 16 Ko.
Donc tu depasses les ressources disponibles sur la pile => crash

Ensuite il est possible de passer un nbr variable d'arguments.
Cf definition de sprintf, printf, ....
Mais c'est a la charge de la fonction de savoir combien d'argumnet ont ete transmis,

4

ue, ba d'ailleurs je voulais poster un sujet la dessus, mais puisqu'il a deja pose la question...
il me semble que la fct est faite comme ca pour avoir un nombre indefini de parametres..

void funct (int param_fixe1, int param_fixe2, ...)
{
[...]
}

et les params indefinis sont representes par les ... c ca?
par contre DANS la fonction, comment on fait pour recuperer ces parametres? ils sont ou? dans une pile?
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

5

Cf stdarg.h.
C'est explique dedans. En gros c'est des macros pour acceder a la pile smile

6

va_arg ...

7

tiens, un bon exemple :

int fprintf_(FILE *out, char *fmt, ...)
{
	va_list va;
	int n;
	char *p;
	char *tmp;

	n = 0;
	va = va_start(va, fmt);
	for (p = fmt; *p; p++) {
		if (*p == '%') {
			switch (*++p) {
			case 's':
				tmp = va_arg(va, char *);
				if (!tmp) tmp = "(null)";
				fputs(tmp, out);
				n += strlen(tmp);
				break;
			case 'c':
				fputc(va_arg(va, char), out);
				n++;
				break;
			/* ... case 'i': case 'u': case 'l': , etc */
			}
		} else {
			putc(*p, out);
			n++;
		}
	}
	va_end(va);
   
	return n;
}

8

super merci neurone et PpHd smile
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

9

merci tout le monde.J'avais pas pensé à la pile grin.Complètement oublié. Je viens de comprendre pourquoi ds les progs les gars se faisaient chier avec malloc. Sinon pour la fonction a plusieurs param c cool que ca marche comme ca.Je pensasi ke ca allait être plus dur
Encore MERCI!!!