首页 > 后端开发 > C++ > 如何在 C 中打印函数指针而不调用它?

如何在 C 中打印函数指针而不调用它?

Mary-Kate Olsen
发布: 2024-10-25 07:33:29
原创
986 人浏览过

How to Print a Function Pointer in C   Without Invoking It?

在没有调用的情况下打印函数指针

当尝试打印不带括号的函数时(即,作为 f 而不是 f()),人们可能会遇到意想不到的结果,例如总是打印值 1。这种看似矛盾的行为源于所涉及的底层机制。

在提供的代码中,语句 cout

为了打印函数指针本身,必须将其显式转换为 void* 指针。这可以通过使用诸如 cout

C 11 和函数指针重载

随着 C 11 的出现,出现了一种更方便的打印函数指针的方法。超载

<code class="cpp">template <class RType, class ... ArgTypes>
std::ostream &amp; operator<<(std::ostream &amp; s, RType(*func)(ArgTypes...))
{
    return s << "(func_ptr=" << (void*)func << ")(num_args=" 
              << sizeof...(ArgTypes) << ")";
}</code>
登录后复制

此重载将以 (func_ptr=

) (num_args=<) 格式打印输出;arity>)。
通过使用此重载,在使用 cout 打印函数指针时可以获得有关函数指针的更详细信息。

以上是如何在 C 中打印函数指针而不调用它?的详细内容。更多信息请关注PHP中文网其他相关文章!

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