在没有调用的情况下打印函数指针
当尝试打印不带括号的函数时(即,作为 f 而不是 f()),人们可能会遇到意想不到的结果,例如总是打印值 1。这种看似矛盾的行为源于所涉及的底层机制。
在提供的代码中,语句 cout
为了打印函数指针本身,必须将其显式转换为 void* 指针。这可以通过使用诸如 cout
C 11 和函数指针重载
随着 C 11 的出现,出现了一种更方便的打印函数指针的方法。超载
<code class="cpp">template <class RType, class ... ArgTypes> std::ostream & operator<<(std::ostream & s, RType(*func)(ArgTypes...)) { return s << "(func_ptr=" << (void*)func << ")(num_args=" << sizeof...(ArgTypes) << ")"; }</code>
此重载将以 (func_ptr=
) (num_args=<) 格式打印输出;arity>)。以上是如何在 C 中打印函数指针而不调用它?的详细内容。更多信息请关注PHP中文网其他相关文章!