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

Joh*_*ohn 0 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上的错误?

Bil*_*eal 6

SIZE_T不同于std::size_t.第一个是#defineWindows头文件中的类型d,第二个是C++编译器定义的类型.它们是不同的类型.

至少在我的系统上,SIZE_T是一个typedeffor ULONG_PTR,这是#definefor unsigned long.