[英]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類型使用哪種類型。
使用std::size_t
描述pValue指向的對象的大小。 但是std :: size_t在x86和x64平台上有所不同。 我不確定界面級別是否合適。
使用具有固定寬度的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.