首页 >后端开发 >C++ >如何在'__func__”、'__FUNCTION__”和'__PRETTY_FUNCTION__”之间进行选择以访问 C 和 C 语言中的函数名称?

如何在'__func__”、'__FUNCTION__”和'__PRETTY_FUNCTION__”之间进行选择以访问 C 和 C 语言中的函数名称?

Susan Sarandon
Susan Sarandon原创
2024-12-13 15:35:11851浏览

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

C 和 C 语言中的函数名称宏

在 C 和 C 语言中,有多个宏可用于访问当前函数的名称。这些宏包括 __func__、__FUNCTION__ 和 __PRETTY_FUNCTION__。

func

在 C99 中定义并被 C 11 采用,func 是一个隐式声明的字符数组变量保存封闭函数的名称。这是一个简单而轻量级的选项,提供了朴素的函数名称。

FUNCTION

FUNCTION 是一个预标准某些编译器支持的扩展。它的行为类似于 func__,但它不是官方语言标准的一部分。出于可移植性的原因,最好使用 __func

PRETTY_FUNCTION

PRETTY_FUNCTION 是一个 GCC-提供函数“漂亮”名称的特定扩展,包括它的签名。与它的前身不同,它在 C 中主要用于获取具有参数类型的完整函数原型。

文档

func 记录在 C99 中标准,第 6.4.2.2/1 节。 FUNCTION 没有正式记录,但通常包含在特定于编译器的文档中。 PRETTY_FUNCTION 记录在 GCC 文档页面“函数名称作为字符串”。

何时使用每个宏

宏的选择取决于具体要求:

  • 功能简单name: funcFUNCTION 就足够了。
  • 带签名的复杂函数名称(仅限 C): PRETTY_FUNCTION
  • C99 之前或非 C 11 兼容性: FUNCTION(如果编译器支持)
  • 最大可移植性: func

以上是如何在'__func__”、'__FUNCTION__”和'__PRETTY_FUNCTION__”之间进行选择以访问 C 和 C 语言中的函数名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn