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

时间:2011-03-07 02:30:54

标签: c++ windows visual-c++

编译32位时出现此错误。对于64位Windows

,同一文件编译时没有错误
  

1> c:\ project \ test.cpp(1317):错误C2664:'StringCbCopyExW':无法将参数5从'SIZE_T *'转换为'size_t *'

SIZE_T和size_t都有相同的大小和符号,那有什么区别?为什么我需要演员?如果类型不同,为什么这只是在32位Windows上的错误?

2 个答案:

答案 0 :(得分:6)

SIZE_Tstd::size_t不同。第一个是Windows头文件中的类型#define d,第二个是C ++编译器定义的类型。它们是不同的类型。

至少在我的系统中,SIZE_Ttypedef的{​​{1}},ULONG_PTR#define

答案 1 :(得分:0)

SIZE_T定义为什么?

它可能被定义为“unsigned int”,或者uint32_t用于向后可联合性