Maison >développement back-end >C++ >Quel identifiant C/C dois-je utiliser pour obtenir le nom d'une fonction au moment de l'exécution ?

Quel identifiant C/C dois-je utiliser pour obtenir le nom d'une fonction au moment de l'exécution ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-13 00:13:14827parcourir

Which C/C   Identifier Should I Use to Get a Function's Name at Runtime?

Sélection du bon identifiant pour l'acquisition du nom de fonction

C et C proposent plusieurs identifiants pour récupérer le nom de la fonction active pendant l'exécution : __PRETTY_FUNCTION__ , __FUNCTION__ et __func__. Ce guide explore les différences entre ces identifiants et fournit des conseils sur leur utilisation.

__func__ :

"__func__" est un identifiant introduit par C99 qui représente un tableau de caractères contenant le nom de la fonction. Il est implicitement défini au sein de chaque fonction. En C , func a été introduit en C 11, offrant une chaîne définie par l'implémentation.

__FUNCTION__ :

"__FUNCTION__" est un pré- extension standard prise en charge par les compilateurs comme gcc et Visual C . Cependant, il est recommandé d'utiliser func là où il est pris en charge et FUNCTION uniquement lorsque func n'est pas disponible.

__PRETTY_FUNCTION__ :

"__PRETTY_FUNCTION__" est un Extension spécifique à gcc qui ressemble à __FUNCTION__. Pour les fonctions C, il affiche le "joli" nom, y compris la signature. Visual C a une extension similaire, __FUNCSIG__.

Décider quel identifiant utiliser :

Le choix dépend de la prise en charge du compilateur et du format de nom de fonction souhaité :

  • Utilisez func lorsqu'il est disponible (pris en charge dans la plupart des versions modernes compilateurs)
  • Utilisez FUNCTION si func n'est pas disponible
  • Utilisez PRETTY_FUNCTION ou FUNCSIG pour le "joli" nom avec la signature de la fonction (gcc ou Visual C uniquement)

Documentation :

  • __func__ : C99 §6.4.2.2/1
  • func (C ): C 11 §8.4.1[dcl.fct.def.general]/8
  • __FUNCTION__, __PRETTY_FUNCTION__ : documentation gcc, "Noms de fonctions sous forme de chaînes"
  • __FUNCSIG__ : documentation MSDN, "Macros prédéfinies" ( Visuel C )

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn