Macro équivalent de FUNCTION pour le nom de classe
Les développeurs rencontrent souvent le besoin d'accéder au nom de la fonction actuelle à l'aide du Macro FONCTION en C . Cependant, une macro similaire pour accéder au nom de la classe n'est pas immédiatement apparente.
Solutions alternatives
Bien qu'il n'existe pas d'équivalent exact de FUNCTION pour noms de classe, des approches alternatives peuvent fournir ces informations. L'utilisation de typeid(*this).name() peut être utilisée, mais elle présente une limitation dans les appels de méthodes statiques.
PRETTY_FUNCTION et macros tierces
La macro PRETTY_FUNCTION renvoie à la fois les noms de fonction et de classe. Cependant, son utilisation est spécifique aux compilateurs GCC.
On peut également exploiter des macros tierces, telles que les macros METHOD_NAME et CLASS_NAME, pour extraire la classe et noms de méthodes, comme démontré dans l'exemple de code ci-dessous :
inline std::string methodName(const std::string& prettyFunction) { ... } #define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__) ... inline std::string className(const std::string& prettyFunction) { ... } #define __CLASS_NAME__ className(__PRETTY_FUNCTION__)
Ces macros gèrent les complexités de l'analyse des noms de classe et de méthode de __PRETTY_FUNCTION__, y compris les cas où il n'y a pas de classe.
Conclusion
Bien que C n'ait pas d'équivalent direct à FUNCTION pour les noms de classe, PRETTY_FUNCTION et les macros tierces offrent des alternatives viables pour accéder à la fois à la méthode et les noms de classe, garantissant la maintenabilité et la lisibilité du code dans divers scénarios.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!