Avec msvc, existe-t-il un équivalent à "__builtin_return_address" de gcc?MSVC équivalent à '__builtin_return_address'
Je cherche l'adresse de la fonction appelante, 1 niveau de profondeur.
Avec msvc, existe-t-il un équivalent à "__builtin_return_address" de gcc?MSVC équivalent à '__builtin_return_address'
Je cherche l'adresse de la fonction appelante, 1 niveau de profondeur.
De MSDN:
La intrinsèque _ReturnAddress fournit l'adresse de l'instruction dans la fonction d'appel qui sera exécuté après le retour de contrôle à l'appelant
Notez que sur certaines plateformes, le résultat peut être trompeur en raison du repli de la queue - le compilateur peut avoir Votre fonction interne retourne 2 niveaux de profondeur. Cela peut généralement se produire pour le code comme ceci:
int DoSomething()
{
return DoSomethingSpecial();
}
Le compilateur peut générer du code si DoSomethingSpecial retourne directement à l'appelant de DoSomething.
En outre, l'adresse de retour n'est pas fiable, suffisante pour prendre des décisions de sécurité, voir here.