簡體   English   中英

我應該使用哪種類型來定義接口中的緩沖區大小?

[英]What type should I use to define buffer size in interface?

我的模塊將在x86和x64環境中使用。 我有一個頭文件,其中包括帶有以下簽名的導出函數。

HRESULT GetObject(DWORD key, void* pValue, MY_SIZE_T  cbSize);

我應該為MY_SIZE_T類型使用哪種類型。

  1. 使用std::size_t描述pValue指向的對象的大小。 但是std :: size_t在x86和x64平台上有所不同。 我不確定界面級別是否合適。

  2. 使用具有固定寬度的DWORD 但是DWORD在x64平台上可能不夠大。 盡管很少有超過2 ^ 32字節的結構。

這取決於cbSize應該包含什么。 如果實際上是pValue指向的對象的大小,則std::size_t絕對是正確的選擇。

std::size_t被保證存在,並保證足夠大以容納對象的大小。 如果您有64位指針,它將至少有64位;如果您有32位指針,則(可能)只有32位。

注意,二進制兼容性在這里可能不是問題。 如果您有一個32位系統並為此而兼容,則無論如何都無法將其與為64位系統編譯的代碼鏈接。 毫無疑問,第三個參數的大小會有所不同(如果確實如此,則指針仍然存在問題)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM