J'essaie de créer une section avec VC++. La section doit servir à contenir
des structures les unes à la suite des autres.
J'aurais besoin de récupérer l'adresse de début et de fin de la section sans
appeler de fonctions Windows. J'ai lu que le linker concaténait les sections
de même nom, en utilisant la chaîne après le '$' pour ordonner les sous
sections. J'utilise donc le code suivant :
De cette facon, toutes les structures seraient allouées dans une seule section. Ce qui est pratique c'est que la macro peut être utilisée dans plusieurs fichiers. Pour afficher les stats, il suffirait de parcourir la section comme si c'était un tableau de structures :
PROFILE* prof = & ProfileSectionStart
while (prof < & ProfileSectionEnd) { printf("La fonction %s a été appelée %d foisn", prof->function_name, prof->num_calls); prof++; }
"AMcD®" <arnold.mcdonald@free.fr> wrote in message
news:411111b0$0$15278$636a15ce@news.free.fr...
T'essayes de faire quoi excatement ?
--
AMcD®
http://arnold.mcdonald.free.fr/
C'est dans le but de compter le nombre d'appels à des fonctions pour faire
du profiling basique. Mon idée était de déclarer une structure du type
struct PROFILE
{
char* function_name;
int num_calls;
}
Ensuite à l'entrée de chaque fonction j'aurais mis :
De cette facon, toutes les structures seraient allouées dans une seule
section. Ce qui est pratique c'est que la macro peut être utilisée dans
plusieurs fichiers. Pour afficher les stats, il suffirait de parcourir la
section comme si c'était un tableau de structures :
PROFILE* prof = & ProfileSectionStart
while (prof < & ProfileSectionEnd)
{
printf("La fonction %s a été appelée %d foisn", prof->function_name,
prof->num_calls);
prof++;
}
De cette facon, toutes les structures seraient allouées dans une seule section. Ce qui est pratique c'est que la macro peut être utilisée dans plusieurs fichiers. Pour afficher les stats, il suffirait de parcourir la section comme si c'était un tableau de structures :
PROFILE* prof = & ProfileSectionStart
while (prof < & ProfileSectionEnd) { printf("La fonction %s a été appelée %d foisn", prof->function_name, prof->num_calls); prof++; }