Nom de variable inconnu lors de la compilation [C] - C - Programmation
Marsh Posté le 24-05-2005 à 11:26:38
Code :
|
?
Marsh Posté le 24-05-2005 à 11:45:47
J'ai effectivement pensé à un switch/case, mais le nombre de tableaux "TABx" ne serait pas fixe : j'aurai à rajouter des fichiers "DATAx.h" relativement souvent !
Marsh Posté le 24-05-2005 à 12:08:07
si le nombre de tableaux n'est pas fixes tu devrais les mettres dans un fichier de données lu a l'execution.
Code :
|
essaye de faire
Code :
|
en partant de ton code, mais il doit y avoir de meilleurs solutions
Marsh Posté le 24-05-2005 à 12:53:04
J'y ai pensé du genre un fichier INI :
[TAB1]
SIZE=10
DATA=0,1,0,1,0,1,0,1,0,1
C'est une alternative intéressante, seulement voilà, je veux justement éviter d'allouer de la mémoire (pas de tempstr = malloc() etc.) car je programme sur GameBoy Advance et la RAM est limitée (et y'a pas de système de fichiers non plus, enfin, en théorie )
Mes tableaux sont définis dans un fichier H car ce sont en fait des fichiers de maps bien plus gros, codés en dur dans la ROM une fois compilée...
Marsh Posté le 24-05-2005 à 13:33:47
Les pointeurs, c'est une bonne idée mais faudra sans doute quand même un switch.
Et pourquoi pas :
const unsigned short TAB[2][10] = {
{0, 1, 0, 1, 0, 1, 0, 1, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};
Marsh Posté le 24-05-2005 à 13:43:46
J'ai laissé tomber les tabs 2D car j'avais pondu l'algo de "lecture" du map avant de penser à passer de 1D -> 2D et j'ai la flemme de le refaire
Pour les pointeurs en revanche, je ne vois toujours pas de quoi vous voulez parler... un pointeur de fonction ?
Marsh Posté le 24-05-2005 à 13:52:34
maestun a écrit : J'ai laissé tomber les tabs 2D car j'avais pondu l'algo de "lecture" du map avant de penser à passer de 1D -> 2D et j'ai la flemme de le refaire |
utilises un tableau 2D, il n'y a rien a refaire
Marsh Posté le 24-05-2005 à 14:08:55
maestun a écrit : Bonjour,
|
Mauvaise conception. On ne met pas de définition d'objet dans un header.
Citation : |
Oui, avec un pointeur, c'est fait pour....
|
Marsh Posté le 24-05-2005 à 14:48:24
>>> Emmanuel :
Citation : |
Comment puis-je faire alors, dans un source C directement ?
Je procède ainsi car je n'ai ni OS ni système de fichiers : j'inclus tout en dur...
Citation : |
Justement, je ne veux pas faire
Code :
|
mais
Code :
|
En fait, je ne connais pas à l'avance le nom du tableau à utiliser...
AJOUT >>>
Dans le code que tu m'as fourni, tempstr devrait être de type (unsigned short *) plutôt que (char *) non ?
Marsh Posté le 24-05-2005 à 14:54:37
c'est justement le cas pour utiliser un tableau 2D, défini le dans un .c
Marsh Posté le 24-05-2005 à 16:03:00
maestun a écrit : >>> Emmanuel :
|
Tu n'as pas d'OS où ça sur ta cible ? Ok. Mais sur la plateforme de développement, tu as tout ce qu'il faut (compilateur, linker, make etc.) donc tu peux créer un executable composé de plusieurs sources.
http://mapage.noos.fr/emdel/codage [...] ser_source
Si ce n'est pas le cas, décrit ton environnement de développement.
Citation : |
Citation : Justement, je ne veux pas faire
|
J'ai pas écrit ça, mais
tempstr = TAB1; |
mais
Citation :
|
On ne peut pas construire de nom de variable en C.
Par contre, on peux 'lier' une chaine avec un objet dans un tableau de structure, mais c'est évidemment déterministe. Si le nom est inconnu, on n eva pas créer l'objet associé ex-nohilo, à moins qu'on demande à faire une sorte de création dynamique d'objet nommé... Pour quoi faire, avec quels bvaeirs ? Je ne vois pas bien encore...
Tu m'as l'air d'avoir beaucoup utilisé les langages interprétés, et d'avoir du mal avec le coté 'monolithique' d'une application écrite en C...
Que veux-tu faire exactement ? La solution est probablement plus simple que tu ne le penses si le problème est exposé clairement.
Citation : AJOUT >>> |
Oui! J'ai tapé un peu vite, désolé. Comme ça, je vois que tu ne dors pas. C'est bien. Code corrigé.
Marsh Posté le 24-05-2005 à 17:06:39
Je pense, qu'il a une variable "i" (par exemple) qui contient le numéro de TAB à utiliser
Donc tableau 1D :
Code :
|
Et tableau 2D :
Code :
|
Marsh Posté le 24-05-2005 à 17:07:25
Emmanuel Delahaye a écrit : |
Ben voilà topic clos, c'est surtout ça que je cherchais à savoir
Sinon pour info, mon environnement de dev : cross-compiler GCC 3.0 / cible ARM7, éditeur propriétaire.
Le cible est une GBA, donc ni OS ni système de fichier (encore que...)
Du coup, je pense que je vais opter pour la solution du "je connais mon nom de variable à l'avance", car la lecture dans un fichier du genre INI me bouffe trop de RAM (32 ko dispo seulement), c'est d'autant plus dommage que j'ai beaucoup de place en ROM... Je pensais meme, à un moment, utiliser ta lib
Je pense que ça simplifiera les choses comme ça.
Marsh Posté le 24-05-2005 à 17:09:20
Tarabiscote a écrit : Je pense, qu'il a une variable "i" (par exemple) qui contient le numéro de TAB à utiliser |
Voilà, je pense que je vais utiliser cette solution, la "1D"
Je n'utiliserai pas l'autre car, meme si elle correspond davantage à ce que je voulais, le contenu de mes tableaux sont générés par un éditeur graphique de maps, c'est plus simple ainsi
Marsh Posté le 24-05-2005 à 11:22:25
Bonjour,
Je me demandais s'il était possible de faire en C une opération particulière...
J'ai un fichier h de ce type :
Je souhaite, par exemple, récupérer le 1er unsigned short d'un tableau, mais je ne sais pas encore lequel des deux !
Le code suivant est faux, mais c'est juste pour me faire comprendre
J'espère me faire comprendre...
Je veux récupérer le contenu d'une variable dont je ne connaîtrai le nom que lors de l'exécution !
Est-il possible de le faire ?
Merci beaucoup