Que*_*est -1 c++ visual-c++ c++11
我有以下代码:
size_t lufread(void *ptr,size_t size,size_t n,LUFILE *stream)
{
unsigned int toread = (unsigned int)(size*n);
if (stream->is_handle)
{
DWORD red;
BOOL res = ReadFile(stream->h,ptr,toread,&red,NULL);
if (!res)
stream->herr=true;
return red/size;
}
if (stream->pos+toread > stream->len)
toread = stream->len-stream->pos;
memcpy(ptr, (char*)stream->buf + stream->pos, toread);
DWORD red = toread;
stream->pos += red;
return red/size;
}
Run Code Online (Sandbox Code Playgroud)
这是编译器错误:
error C2664: 'ReadFile' : cannot convert parameter 4 from 'unsigned int *' to 'LPDWORD'
Run Code Online (Sandbox Code Playgroud)
我不明白,因为DWORD red是相同unsigned long red
所以在函数ReadFile()第四个参数&red应该是unsigned long *,不应该吗?
int并且long被认为是不同的类型,即使它们都是相同大小的整数类型(在Microsoft下).如果没有显式强制转换,则无法转换指向不同类型的指针.
看来你没有使用标准定义,DWORD而是替换了你自己的.不要那样做.