64位大小的类型和Windows API

时间:2017-09-20 14:51:02

标签: c++ winapi 64-bit

在正确安全地转换为64位后,如何处理占用大小的Windows API调用?

例如:

来自winsock

int send(
  _In_       SOCKET s,
  _In_ const char   *buf,
  _In_       int    len,
  _In_       int    flags
);

int MultiByteToWideChar(
  _In_      UINT   CodePage,
  _In_      DWORD  dwFlags,
  _In_      LPCSTR lpMultiByteStr,
  _In_      int    cbMultiByte,
  _Out_opt_ LPWSTR lpWideCharStr,
  _In_      int    cchWideChar
);

自然会调用some_container :: size()来返回size_t。 size_t使用64位时,msvc编译器是无符号长long。

有人可以施放,但这不安全,因为理论上容器的大小可能比int的边界大。

一个人可以检查然后再进行演员,但这是人们在实践中真正做的事情吗?这对正在转换的大型项目有很多工作要做。查找和替换不会在那个上工作。

你做什么的?我有一种感觉,大多数人都会忽略它,但这似乎不是一件好事。我喜欢一个没有警告的漂亮版本。

为什么他们没有这些功能的64位版本,类似于各种功能的广泛和多字节版本?

0 个答案:

没有答案