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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-25 07:33:29987浏览

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中文网其他相关文章!

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