Maison > développement back-end > C++ > Comment choisir entre `__func__`, `__FUNCTION__` et `__PRETTY_FUNCTION__` pour accéder aux noms de fonctions en C et C ?

Comment choisir entre `__func__`, `__FUNCTION__` et `__PRETTY_FUNCTION__` pour accéder aux noms de fonctions en C et C ?

Susan Sarandon
Libérer: 2024-12-13 15:35:11
original
848 Les gens l'ont consulté

How to Choose Between `__func__`, `__FUNCTION__`, and `__PRETTY_FUNCTION__` for Accessing Function Names in C and C  ?

Macros de nom de fonction en C et C

En C et C, plusieurs macros sont disponibles pour accéder au nom de la fonction courante. Ces macros incluent __func__, __FUNCTION__ et __PRETTY_FUNCTION__.

func

Défini en C99 et adopté en C 11, func est une variable de tableau de caractères implicitement déclarée qui contient le nom du fonction englobante. Il s'agit d'une option simple et légère qui fournit le nom de la fonction sans fioritures.

FUNCTION

FUNCTION est une pré-standard extension supportée par certains compilateurs. Son comportement est similaire à func__, mais il ne fait pas partie des standards des langues officielles. Il est préférable d'utiliser __func lorsqu'il est disponible pour des raisons de portabilité.

PRETTY_FUNCTION

PRETTY_FUNCTION est un GCC- extension spécifique qui fournit le "joli" nom de la fonction, y compris sa signature. Contrairement à ses prédécesseurs, il est principalement utile en C pour obtenir le prototype complet de la fonction avec les types d'arguments.

La documentation

func est documentée dans le C99 norme, article 6.4.2.2/1. FUNCTION n'est pas officiellement documenté mais est généralement inclus dans la documentation spécifique au compilateur. PRETTY_FUNCTION est documenté sur la page de documentation de GCC "Noms de fonctions sous forme de chaînes."

Quand utiliser chaque macro

Le choix de la macro dépend de exigences spécifiques :

  • Nom de la fonction simple : func ou FUNCTION est suffisant.
  • Nom de fonction complexe avec signature (C uniquement) : PRETTY_FUNCTION
  • Pré-C99 ou non-C11 compatibilité : FONCTION (si pris en charge par le compilateur)
  • Portabilité maximale : func

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal