」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 64 位元機器上安全地將指標轉換為整數?

如何在 64 位元機器上安全地將指標轉換為整數?

發佈於2024-12-23
瀏覽:659

How Can I Safely Convert a Pointer to an Integer on 64-Bit Machines?

將指標轉換為整數:針對64 位元機器重新檢視

將指標轉換為整數:針對64 位元機器重新檢視

void function(MESSAGE_ID id, void* param) {
  if (id == FOO) {
    int real_param = (int)param;
    // ...
  }
}

void function(MESSAGE_ID id, void* param) { 如果(id == FOO){ int real_param = (int)param; // ... } }

採用更新的鑄造技術的解決方案

#include 

void *p;
auto i = reinterpret_cast<:uintptr_t>(p);

#include 無效*p; auto i = reinterpret_cast<:uintptr_t>(p);

選擇正確的資料型別

// C  11
std::uintptr_t i;

// C  03
extern "C" {
#include 
}
uintptr_t i;

// C99
#include 
uintptr_t i;

// C 11 std::uintptr_t 我; // C 03 外部“C”{ #include } uintptr_t 我; // C99 #include uintptr_t i;

使用正確的轉換運算子

// C  11
auto i = reinterpret_cast<:uintptr_t>(p);

// C  03
uintptr_t i = reinterpret_cast(p);

// C
uintptr_t i = (uintptr_t)p;

// C 11 自動 i = reinterpret_cast<:uintptr_t>(p); // C 03 uintptr_t i = reinterpret_cast(p); // C uintptr_t i = (uintptr_t)p;How Can I Safely Convert a Pointer to an Integer on 64-Bit Machines?

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3