编译32位时出现此错误。同样的文件,没有错误的64位编译的Windows无法将参数5从'SIZE_T *'转换为'size_t *' - 为什么?
1> C:\项目\ TEST.CPP(1317):错误C2664: 'StringCbCopyExW':不能转换参数,从5 'SIZE_T *' 到' size_t *'
SIZE_T和size_t都有相同的大小和符号,所以有什么区别?为什么我需要在这里演员?如果类型不同,为什么只在32位Windows上出错?
编译32位时出现此错误。同样的文件,没有错误的64位编译的Windows无法将参数5从'SIZE_T *'转换为'size_t *' - 为什么?
1> C:\项目\ TEST.CPP(1317):错误C2664: 'StringCbCopyExW':不能转换参数,从5 'SIZE_T *' 到' size_t *'
SIZE_T和size_t都有相同的大小和符号,所以有什么区别?为什么我需要在这里演员?如果类型不同,为什么只在32位Windows上出错?
什么SIZE_T定义为?
它可能被定义为 “无符号整型”,或uint32_t的用于向后comaptibility
'的typedef ULONG_PTR SIZE_T,* PSIZE_T;' – John 2011-03-07 04:22:25
SIZE_T
是从std::size_t
不同。第一种是Windows头文件中的#define
类型,第二种是由C++编译器定义的类型。他们是不同的类型。
至少在我的系统上,SIZE_T
是ULONG_PTR
一个typedef
,这是一个unsigned long
#define
。
对于64位是'的typedef无符号__int64 ULONG_PTR,* PULONG_PTR;'为32位是'的typedef _W64无符号长ULONG_PTR,* PULONG_PTR;'。无论哪种情况,这些应该是相同整数类型的别名。 – John 2011-03-07 04:20:23
你能不能为的size_t和SIZE_T在32位的Windows做的sizeof? – Michas 2011-03-07 03:00:08