将LARGE_INTEGER.QuadPart作为size_t的out参数传递是否安全?

时间:2014-07-12 18:33:04

标签: c++ c winapi

Func原型:

foo(_out_ PSIZE_T arg);

用法:

LARGE_INTEGER offset = {0};

foo(&offset.QuadPart); // Is it safe ?

参考:http://msdn.microsoft.com/en-us/library/windows/desktop/aa383713(v=vs.85).aspx

1 个答案:

答案 0 :(得分:5)

该文档将QuadPart定义为LONGLONG。 This将LONGLONG定义为64位__int64和32位 doubleThisLONGLONG定义为__int64

如果你编译为32位,那么它肯定是错的,因为size_t是一个无符号的32位整数。如果编译为64位,那么仍然错误,因为size_t是 unsigned int并且LONGLONG已签名。

因此,它在64位中也不正确,因为LONGLONG已签名且size_t未签名,正如Steve所说。

无论如何,您的编译器应将其标记为错误。

相关问题