portée des variables - C - Programmation
Marsh Posté le 24-03-2010 à 23:38:11
un peu de code pour etre plus clair
Code :
|
donne :
D:\boulot>a.exe |
Marsh Posté le 26-03-2010 à 09:44:22
une piste ?
j'ai trouvé quelque chose qui y ressemble ici http://www.dreamincode.net/code/snippet3323.htm
que représente les "100 bytes of code" de la ligne 38 ?
Marsh Posté le 26-03-2010 à 11:12:00
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 :
|
2 - Exemple de ce que je pense que tu voudrais faire avec une variable non static :
Code :
|
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.
Marsh Posté le 21-04-2012 à 13:58:41
Pour la solution 1, je pourrais effectivement faire précéder les déclarations du mot clé statique. Comme l'idée c'est de faire ca en auto (passer le fichier source dans une moulinette) ca risque d'être tendu, il me faut recoder une analyseur syntaxique qui irait "détecter" les déclarations... c'est chaud je pense
donc solution 3 :
la fonction contenant mes variables à inspecter est bien toujours stackée lors de l'appel a la macro.
Quand tu dis "il va te falloir au moins l'adresse d'une de tes variables", est-ce que c'est sous entendu quand connaissant l'adresse d'une des variable d'une fct, on peut déterminer les autres ?
en quoi l'assembleur pourrait m'être utile ?
merci et dsl pour le remontage de topique, j'étais passé sur un autre projet..
Marsh Posté le 24-03-2010 à 23:26:19
bonjour, je voudrais savoir comment accéder aux variables locales d'une fonction depuis une autre.
Je développe une fonction de debug qui sort pour l'instant uniquement les lignes exécutées, ce qui me permet de tracer l'exécution.
je fais appel à ma fonction via une macro positionnée en début de chaque ligne avec en paramètre les constantes __file__ et __line__.
J'aimerais maintenant accéder depuis ma fonction de debug aux variables de la fonction que je suis entrain de tracer.
j'ai vu qu'il existait une constante __func__ qui donne le nom de la fonction en cours, n'est-il passe possible grâce à ce paramètre d'exporter les variables locales en mémoire (la pile de __func__?-je ne maitrise pas trop le sujet) ?
j'ai trouvé cà http://stackoverflow.com/questions [...] guage-here mais il n'y a pas le C...
Message édité par djobidjoba le 25-03-2010 à 00:11:16