Maison >développement back-end >C++ >Quelle est la différence entre `__PRETTY_FUNCTION__`, `__FUNCTION__` et `__func__` ?

Quelle est la différence entre `__PRETTY_FUNCTION__`, `__FUNCTION__` et `__func__` ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-24 00:48:09349parcourir

What's the Difference Between `__PRETTY_FUNCTION__`, `__FUNCTION__`, and `__func__`?

Comprendre les différences : PRETTY_FUNCTION__, __FUNCTION__ et __func

En programmation, l'accès aux informations sur la fonction actuelle peut être utile pour le débogage, la journalisation et à d’autres fins. Trois identifiants couramment utilisés en C et C remplissent cette fonction : __PRETTY_FUNCTION__, __FUNCTION__ et __func__. Chacun possède ses propres caractéristiques uniques qui méritent d'être comprises.

__func__ : un identifiant standard de C99

Défini en C99, func est un identifiant implicitement déclaré identifiant qui se développe en un tableau de caractères contenant le nom de la fonction dans laquelle il est utilisé. En tant qu'identifiant déclaré, func se comporte différemment d'une macro de préprocesseur.

__FUNCTION__ : une extension pré-standard

Largement prise en charge par les compilateurs C comme gcc et Visual C, FUNCTION ne fait pas strictement partie du standard C. Il se comporte généralement de la même manière que __func__, mais certaines incohérences entre les compilateurs peuvent exister.

__PRETTY_FUNCTION__ : une extension GCC

PRETTY_FUNCTION est une extension spécifique à gcc. extension comparable à __FUNCTION__. Cependant, pour les fonctions C, il renvoie le « joli » nom, qui inclut la signature de la fonction.

Choisir le bon identifiant

La sélection de l'identifiant à utiliser dépend principalement de Exigences de support et de fonctionnalité :

  • Si la conformité à la norme C99 est nécessaire, utilisez __func__.
  • Si vous avez besoin d'une option plus portable avec un comportement similaire à __func__, envisagez d'utiliser __FUNCTION__.
  • Si votre code est spécifiquement conçu pour gcc et que vous voulez le "joli" nom de fonction, employez __PRETTY_FUNCTION__.

Il est également important de consulter la documentation spécifique du compilateur pour les extensions non standard comme FUNCTION et __PRETTY_FUNCTION__. Par exemple, Visual C propose des extensions similaires comme __FUNCSIG__.

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