首頁 > 後端開發 > C++ > 主體

可以將 void 指標轉換為 C 中的函數指標嗎?

Barbara Streisand
發布: 2024-11-02 21:20:30
原創
449 人瀏覽過

Can You Cast void Pointers to Function Pointers in C  ?

在C 中將空指標轉換為函數指標

將dlsym() 等函數傳回的空指標轉換為函數在C中並不簡單。預設情況下,C 98/03 中禁止此類直接轉換。

限制原因

在 C 98/03 中,void* 指標用於引用對象,不是函數或成員指針。

C 中的有條件支援0x

在 C 0x 中,實作可以選擇支援將 void* 轉換為函數指標。如果支持,則行為必須符合標準。

與實作相關的解決方法

雖然不允許直接轉換,但這些解決方法可以在大多數平台上運行:

  • 重新詮釋轉換:
<code class="cpp">fptr my_fptr = reinterpret_cast<fptr>(reinterpret_cast<long>(gptr));</code>
登入後複製
  • 變數重新解釋:
<code class="cpp">fptr my_ptr = 0;
reinterpret_cast<void*&>(my_ptr) = gptr;</code>
登入後複製

注意事項

這些解決方法涉及未定義的行為,應謹慎使用。

以上是可以將 void 指標轉換為 C 中的函數指標嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板