首頁 >後端開發 >C++ >如何在 C 中列印函數指標而不呼叫它?

如何在 C 中列印函數指標而不呼叫它?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-25 07:33:29989瀏覽

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=)。
透過使用此重載,在使用 cout 列印函數指標時可以獲得有關函數指標的更詳細資訊。

以上是如何在 C 中列印函數指標而不呼叫它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn