J'essaie d'afficher l'adresse mémoire d'une fonction dans une MessageBox, mais elle ne l'affiche pas comme je le souhaite. Je veux passer une adresse de fonction d'une fonction de rappel à une autre fonction, donc j'ai essayé d'obtenir son adresse.Adresse d'affichage C++ d'une fonction dans un MessageBox
J'ai regardé this par exemple et essayé de le montrer dans un MessageBox d'abord à la place d'imprimer sur la console, avant de l'utiliser.
Comment je l'ai essayé:
char ** fun()
{
static char * z = (char*)"Merry Christmas :)";
return &z;
}
int main()
{
char ** ptr = NULL;
char ** (*fun_ptr)(); //declaration of pointer to the function
fun_ptr = &fun;
ptr = fun();
char C[256];
snprintf(C, sizeof(C), "\n %s \n Address of function: [%p]", *ptr, fun_ptr);
MessageBoxA(nullptr, C, "Hello World!", MB_ICONINFORMATION);
snprintf(C, sizeof(C), "\n Address of first variable created in fun() = [%p]", (void*)ptr);
MessageBoxA(nullptr, C, "Hello World!", MB_ICONINFORMATION);
return 0;
}
Mais, ces MessageBoxes affichent un très grand nombre et ils semblent nuls. J'aime les afficher dans une boîte aux lettres exactement comme dans les exemples de sorties de la publication liée.
Merci à l'avance.
la distribution dans '(char *) "Joyeux Noël :)"' est inutile et dangereuse parce que la chaîne littérale est déjà 'const char * ' –
À quoi ressemble la valeur d'un pointeur de fonction? Je m'attendrais à un "très grand nombre". Que voulez-vous dire par «et ils semblent nuls», cela semble contredire «un très grand nombre». – Yunnosch
* A quoi ressemble la valeur d'un pointeur de fonction? * Comme ceci: '0xxxxxxx'. :-) Et ** J'aime les afficher dans une boîte aux lettres exactement comme dans les exemples de sorties du poste. ** – Blueeyes789