如果文件是.c,MSVC将编译。
如果它是.cpp "cannot convert from 'void *' to 'unsigned char *'"
我正在使用MEMORY_BASIC_INFORMATION::BaseAddress
中的windows.h
,void*
,将其分配给char*
,以便查看您知道的实际地址?
当我将它转换为char *,然后回到void*
(在Windows函数中使用它)时,它就像错误并丢失数据或其他东西
怎么办?
答案 0 :(得分:9)
在C ++中,您必须使用显式强制转换将void*
转换为其他任何内容:
void *vp;
unsigned char *cp = static_cast<unsigned char *>(vp);
这确实与C中的情况不同,其中void*
可以隐式转换为任何其他指针类型。相反的情况仍然如C:
void *vp = cp; // no need for a static_cast
但是,我不明白为什么您需要char*
来“查看实际地址”,void*
可以按operator<<
std::ostream
按std::printf
打印。 1}}和%p
与{{1}}。