Existe-t-il un moyen (standardisé) d'obtenir le nom de la méthode actuelle en utilisant C++? En utilisant GNU GCC, vous pouvez le faire en utilisant la macro __FUNCTION__
et __PRETTY_FUNCTION__
(entourée de 2 caractères de soulignement), cependant, ceci n'est bien sûr pas portable. Existe-t-il un moyen de le faire en C++ standard ou un moyen de le rendre portable?Obtention du nom de la méthode actuelle en C++
Répondre
L'identificateur __func__
fait partie de la norme C99 et se trouve dans le brouillon C++ 0x.
L'identificateur __func__
est implicitement déclarée par le compilateur que si les conditions suivantes étaient au début de chaque corps de la fonction:
static const char __func__[] = "function-name";
où function-name
est une chaîne de caractères définie par l'implémentation fournie automatiquement par le compilateur. Jusqu'à ce que la prise en charge de ces normes soit disponible (ou plus largement disponible), vous êtes confronté à des impairs spécifiques au compilateur.
Non, il n'est pas pris en charge par la norme C++.
Cela s'appelle "introspection" et il n'y a rien de tel dans les normes C++. Vous devriez utiliser une bibliothèque externe (boost je pense que ça le supporte d'une façon ou d'une autre). Mais essayez de comprendre si la raison de l'utiliser est vraiment bonne.
Dans d'autres langues, il est utile de générer des tests unitaires –
Non ...... mais certaines choses finissent par être des normes non standard!
voir http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx qui décrit les choses norme ANSI, puis microsofs qui comprend FONCTION
- 1. Obtention du nom du paramètre passé dans une méthode
- 2. Récupérer dynamiquement le nom de la méthode actuelle
- 3. Obtention du nom de la fenêtre active
- 4. Obtention du contexte d'attribut en C#
- 5. Obtention de la trace de la pile actuelle sous Mac OS X
- 6. Comment obtenir le fichier en cours, la classe en cours et la méthode actuelle avec Python?
- 7. Crystal Reports: Suppression conditionnelle d'un champ en fonction du nom du groupe dans la page actuelle
- 8. Comment obtenir le nom ou la signature de la méthode actuelle dans un NSString?
- 9. Obtention du nom de fichier du fichier dirigé par .htaccess?
- 10. Obtention du nom de groupe de l'utilisateur sous Windows
- 11. Obtenir l'utilisation actuelle du processeur, de la RAM et du lecteur de disque en C#
- 12. Obtention/définition du propriétaire du fichier en C#
- 13. Obtention du nom d'affichage de l'utilisateur à partir de WindowsIdentity
- 14. Services d'authentification/de création de formulaires - Obtention du nom d'utilisateur
- 15. La liste déroulante du nom de la classe et du nom de la méthode est manquante (paramètre du studio visuel)
- 16. Comment obtenir le nom de la méthode actuelle dans Delphi 7?
- 17. Obtention du premier nom de feuille Excel avec OleDbConnection
- 18. Obtention du nom d'hôte de l'appelant dans WCF
- 19. Obtention d'un System.Type à partir du nom partiel du type
- 20. Obtention du nom de modèle dans le modèle django
- 21. Détermination du nom de la vue actuelle dans une vue partielle dans ASP.NET MVC
- 22. Utilisation de la classe actuelle dans la déclaration de méthode statique Java
- 23. Définition du nom du fichier journal d'erreur dans apache pour inclure la date actuelle
- 24. C: obtention du nom d'hôte à partir du socket TCP et UDP?
- 25. Modifier le nom du processus en C#?
- 26. Comment obtenir le nom de la cible actuelle dans MSBuild?
- 27. Obtention de la culture du serveur Web
- 28. Nom de la machine Java actuelle et utilisateur connecté?
- 29. Obtention du contenu de PropertyGrid?
- 30. Création d'un Hibernate UserType personnalisé: recherche du nom de la table d'entité actuelle
vous pouvez échapper aux underscores en utilisant des barres obliques inverses pour éviter les démarques chambouler ... – Roddy
Ou en cliquant sur le bouton « code » dans l'éditeur, ce que j'ai fait quand je l'ai édité. –
J'utilise ['BOOST_CURRENT_FUNCTION'] (http://www.boost.org/doc/libs/1_36_0/libs/utility/current_function.html) – fizzer