首页 > 后端开发 > C++ > `__PRETTY_FUNCTION__`、`__FUNCTION__` 和 `__func__` 有什么区别?

`__PRETTY_FUNCTION__`、`__FUNCTION__` 和 `__func__` 有什么区别?

Patricia Arquette
发布: 2024-12-24 00:48:09
原创
344 人浏览过

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

理解差异:PRETTY_FUNCTION__、__FUNCTION__ 和 __func

在编程中,访问有关当前函数的信息可以对于调试、日志记录和其他目的很有用。 C 和 C 语言中三个常用的标识符提供此功能:__PRETTY_FUNCTION__、__FUNCTION__ 和 __func__。每个都有其独特的特征,值得理解。

__func__:来自 C99 的标准标识符

在 C99 中定义,func 是一个隐式声明的标识符扩展为包含使用它的函数名称的字符数组。作为声明的标识符,func 的行为与预处理器宏不同。

__FUNCTION__:预标准扩展

受到 C 编译器的广泛支持,例如gcc 和 Visual C ,FUNCTION 严格来说不是 C 的一部分 标准。它的行为通常与 __func__ 类似,但编译器之间可能存在一些不一致。

__PRETTY_FUNCTION__:GCC 扩展

PRETTY_FUNCTION 是 gcc 特定的与 __FUNCTION__ 相当的扩展名。然而,对于 C 函数,它返回“漂亮”的名称,其中包括函数的签名。

选择正确的标识符

选择要使用的标识符主要取决于支持和功能要求:

  • 如果需要符合标准 C99,请使用__func__.
  • 如果您需要行为类似于 __func__ 的更可移植的选项,请考虑使用 __FUNCTION__。
  • 如果您的代码是专门为 gcc 设计的并且您想要“漂亮”的函数名称,请使用__PRETTY_FUNCTION__.

查阅特定的编译器文档也很重要非标准扩展,如 FUNCTION 和 __PRETTY_FUNCTION__。例如,Visual C 提供类似的扩展,如 __FUNCSIG__。

以上是`__PRETTY_FUNCTION__`、`__FUNCTION__` 和 `__func__` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板