在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中文網其他相關文章!