有没有理由不假设SIZE_T是Microsoft的Visual C / C ++编译器中size_t的typedef? Windows intsafe.h函数确实包含从一个到另一个的安全转换函数。这只是为了完整性还是有任何情况下静态强制转换可能无法给出预期的结果?
答案 0 :(得分:4)
如果您的应用程序必须是跨平台的,那么您将只需使用该语言中的标准,即std :: size_t。否则,使用看似合适的东西。 如果您的目标是获取std :: size_t的类型,那么为什么不直接使用它而不关心特定于平台的类型?
顺便说一句,std :: size_t保证为最大数组大小提供足够的值,即可以在计算机上分配的最大字节数。因此,使用它而不是任何其他typedef应该是安全的。
答案 1 :(得分:2)
鉴于唯一的文档是vague to say the least,我将避免假设有关SIZE_T
和size_t
之间关系的任何内容。只要SIZE_T
是整数类型的typedef
,static_cast<std::size_t>(val)
应该按预期工作。