gpt4 book ai didi

c++ - 无法将参数从 'SIZE_T *' 转换为 'size_t *' - 如何转换?

转载 作者:行者123 更新时间:2023-11-28 02:14:13 49 4
gpt4 key购买 nike

在某些 Windows API 调用中,我得到:cannot convert argument 6 from 'size_t *' to 'SIZE_T *' .

This answer告诉我SIZE_Tstd::size_t是不同的类型。我知道两者描述的是同一件事,只是通过不同的 SDK(C 编译器与 Windows SDK),所以我想投

reinterpret_cast<SIZE_T *>(&my_size_t_var)`

有没有更简单的方法呢?

编辑: SIZE_T是(至少在为 64 位目标编译时):

typedef ULONG_PTR SIZE_T, *PSIZE_T; 
typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;

Edit2:我正在使用 Win32 压缩 API,特别是 Compress ,它有一个参数 _In_ SIZE_T UncompressedDataSize ,我想用一些 std::vector<byte>.size() 来调用它.

最佳答案

我会这样做:

static_assert(sizeof(size_t) == sizeof(SIZE_T), "Expect size_t to be same size as SIZE_T");

在你的 reinterpret_cast<SIZE_T*>(&my_size_t_var) 附近的某个地方.

这将确保它们在大小上兼容,这是关键点。

关于c++ - 无法将参数从 'SIZE_T *' 转换为 'size_t *' - 如何转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34530671/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com