c++ - 无法将参数 5 从 'SIZE_T *' 转换为 'size_t *'——为什么?

标签 c++ windows visual-c++

我在为 32 位编译时遇到此错误。相同的文件在 64 位 Windows 上编译没有错误

1>c:\project\test.cpp(1317) : error C2664: 'StringCbCopyExW' : cannot convert parameter 5 from 'SIZE_T *' to 'size_t *'

SIZE_T 和 size_t 的大小和符号都相同,那么有什么区别呢?为什么我需要类型转换?如果类型不同,为什么这仅在 32 位 Windows 上出现错误?

最佳答案

SIZE_T 不同于 std::size_t。第一个是 Windows header 中的 #defined 类型,第二个是 C++ 编译器定义的类型。它们是不同的类型。

至少在我的系统上,SIZE_TULONG_PTRtypedef,它是 #define unsigned long.

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

相关文章:

c++ - 为什么我们需要使用 virtual ~A() = default;而不是 C++11 中的虚拟 ~A() {}?

c# - 多操作系统用户身份验证技术的方法和建议

c++ - 使用所有寄存器后的 msvc 编译器行为

C++ 在类中前向声明类

c++ - “超出 PCH 的虚拟范围”问题 - 在 Visual Studio 2019 升级到 16.7.6 之后

c++ - 使用映射来计算字符串输入

windows - 在 FORFILES 命令中添加空格的 REG ADD

c++ - 如何使用 VS2015 获取语言环境名称?

c++ - 是否可以防止 unordered_map::insert 抛出异常?

visual-c++ - 用于 GCC/G++ 的 VC++ #import 指令