djobidjoba a écrit :
bonjour, je voudrais savoir comment accéder aux variables locales d'une fonction depuis une autre.
|
C'est très très très moche de vouloir faire ça. Il faudrait se poser la question de comment tu as pu en arriver là. Mais bon, tu es grand et ça ne regarde que toi.
Il existe plusieurs tricks pour faire ça. Tu n'as pas précisé quelque chose, est-ce qu'il s'agit de variables "static", auquel cas tu sors régulièrement de ta fonction, ou alors de variables non "static" d'une fonction encore stacked ?
1 - Exemple de ce que je pense que tu voudrais faire avec une variable static :
Code :
- static void func(void)
- {
- static int i = 0;
- i++;
- }
- int main(void)
- {
- func();
- func()
- /* Try to access func()'s "i" here. */
- return 0;
- }
|
2 - Exemple de ce que je pense que tu voudrais faire avec une variable non static :
Code :
- static void func()
- {
- /* Try to access main()'s "i" here. */
- }
- int main(void)
- {
- int i = 42;
- func();
- return 0;
- }
|
Pour le cas 1, tu peux faire quelque chose d'assez simple, il te suffit de sortir "i" de ta fonction et de la foutre en globale.
Pour le cas 2, ça se complique, tu peux aussi mettre en globale les variables que tu voudrais mais ça sera surement pas la bonne solution vu qu'il peut y en avoir plusieurs.
Si ta fonction est toujours stackée, y'a rien qui t'empèche de chopper directement leurs adresses. Mais si tu ne veux pas faire d'assembleur il va te falloir au moins l'adresse d'une de tes variables.