1

j'ai décidé de distribuer le code de kirby et j'ai donc commencé a améliorer la comprehension du code.
Il y a encore peu je programmait qu'en header file c'est a dire un fichier .c et que des fichier .h avec les fonctions de chaque module incluse dans le fichier .h
J'ai donc remis en etat tout ca et j'ai refait le projet a la norme 'C' c'est a dire les fichier .c pour le modules et le header pour les definitions seulements.
Deja j'ai une question :
POurquoi quand on a une variable globale definit commse cela:
static unsigned int var;

et dans les autres fichier .c on met extern unsigned int var; ca met undefinded variable reference et que lorsque l'on vire le static ca marche?
Deuxieme question pourquoi j'obtiens un code maitenant plus gros avec plusieurs fichier .c (difference de 394 octet) ?

Bon voila si kelk1 a la réponse je veux bien la savoir! smile
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com

2

Première question : parceque c'est le langage C qui le veut smile
Pour une variable globale, static n'a pas le même sens que pour une variable locale.
static demande au compilateur de cacher la variable aux autres modules du projet. Elle devient en fait une variable locale au fichier.

Deuxième question : c'est normal. Les variables situées dans d'autres modules sont adressées en absolue. Les variables d'un même module sont adressées en relatif.
C'est par sécurité : le compilateur ne peut pas savoir que la variable ne sera pas à plus de 32ko du point de référencement.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

3

Pour le deuxième point, peut-être que l'ajout du switch -Wa,-l améliorerait un peu les choses.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

4

merci thibault! Pour le static je m'en doutait un peu grin mais je préferait en etre sur.
je vais essayer ton switch xdanger merci encore... mais dans ce cas la ca vaut mieux question taille mon code tout pas beau!!!
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com

5

Attention, Thibaut va te râler après car tu n'as pas écrit son prénom comme il faut...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

6

grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

7

BOn xdanger ton switch:aucune difference confus
Merci thibaut!
vla le prenom est bien écris!
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com

8

en bref un prog est plus lent quand il est ecrit en plusieur fichier *.c
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

9

mais il est aussi nettement plus structure :0
(et normalementm pour faire propre, on n'utilise pas 36000 variables globales smile)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

10

perso, je préfere (mm si c pas propre) mettre du code dans les header

11

argh !
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

ca me rapelle la premiere version de XLib smile
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

13

le code dans les header c'est nul tant qu'a y mettre du code faire un include d'un ".c" au moins ca dit bien ce que c'est
avatar

14

c pas vraiment plus propre non plus...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

15

non mais au moins ca dit ce que c'est
avatar

16

oué, si tu veux.
sauf que c pas bo grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

17

Programmer proprement en mettant du code dans les .c permet d'utiliser des Makefile ou la compilation séparée de TIGCC, c'est très pratique.
TiMad
a écrit : en bref un prog est plus lent quand il est ecrit en plusieur fichier *.c

Bof, seul les appels de fonctions ralentissent (on ne peut pas inliner), mais on ne voit pas la différence.
mastergb1 a écrit :
BOn xdanger ton switch:aucune difference confus

Ca devrait marcher, t'es sûr que tu as bien activé le switch ?

18

XDanger : je ne râle pas pour si peu moi wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

19

mastergb1 a écrit :
BOn xdanger ton switch:aucune difference confus

Tu l'as utilisé comment, le switch? Si tu utilises l'IDE, il faut mettre -l dans "GNU Assembler Options". -Wa,-l, c'est pour tigcc.exe. Et c'est un L minuscule, pas un i majuscule ou une barre verticale.
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é

20

uther,neurone->moi j'inclus mes michiers sources, il servent aussi d'en-têtes: //--- en-tête privé --- #ifndef SOURCE_HEADER // inclusions #include <stdio.h> #include <conio.h> #include <stdlib.h> //prototypes privés //structure privée #endif //--- en-tête public --- void inputstr(char *chaine,int taille,bool pwd); size_t inser_str(char *dest,size_t taille,const char *format,...); //--- Fonctions: toujours privées --- #ifndef SOURCE_HEADER /* FONCTION D'ENTREE DE CHAINE    --------------------------- */ void inputstr(char *chaine,int taille,bool pwd) { int i=0,carac; do      {      carac=getch();      if(i==taille-1 && carac!=13 && carac!=8)           continue;      if(carac>31)           {           putch(pwd ? '*' : carac);           chaine[i]=(char)(carac);           i++;           }      if(carac==8 && i!=0)           {           chaine[i]=0;           i--;           printf("\x08 \x08");           }      } while(carac!=13); chaine[i]=0; } /* FONCTION D'INSERTION DE CHAINE    ------------------------------ */ size_t inser_str(char *dest,size_t taille,const char *format,...) { size_t nbcarac=0,i,j,tailleins,numchaine=1; const char **pt_chaines=&format; for(i=0;format[i] && nbcarac<taille;i++)      {      switch(format[i])           {           case '%':                i++;                if(format[i+1]=='%')                     break;                tailleins=atoi(&format[i]);                for(;format[i] && format[i]!='s' && format[i]!='S';i++);                for(j=0;pt_chaines[numchaine] && pt_chaines[numchaine][j] && nbcarac<taille && (!tailleins || j<tailleins);j++,nbcarac++)                     dest[nbcarac]=pt_chaines[numchaine][j];                numchaine++;                break;           default:                dest[nbcarac++]=format[i];           }      } if(nbcarac>=taille)      nbcarac=taille-1; dest[nbcarac]=0; return nbcarac; } #endif
et ça s'utilise comme ça:
#define SOURCE_HEADER
#include "inputstr.cpp"
#undef SOURCE_HEADER
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

21

Ça, c'est un hack intéressant, mais très bizarre et très probablement mal géré par les IDEs (un fichier qui est à la fois compilé à part et inclus, le tout avec des #defines). Il vaut mieux mettre tes 2 déclarations dans un fichier à part que tu inclus dans le fichier .cpp.
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é

22

C'est justement pour ne pas accumuler les fichiers que je fais cela.
Mais si tu veux je vais vérifier si ça passe ou non avec Visual_C++, mais il me semble bien que oui, du moins pour les fonctions "publiques:" vu que leur prototype ne dépend pas du #define, ça passe...
D'ailleurs, des prototypes dépendants d'un #define passent également quand celui-ci est inclus dans les options du compilateur...

Edit: Ca y est, j'ai vérifié, les prototypes sont affichés en info-bulle dans Visual C++, donc ça passetop
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

23

j'ai deja vu ca aussi ....