#include <stdio.h>
int main()
{
int a = 10;
void *p = &a;
int *ptr = p; // the error occurs here (cannot convert from 'void' to 'int')
printf("%u",*ptr);
return 0;
}
错误如上所述。 为什么会发生错误? 是因为初始化是在指针声明为void?
的同时完成的答案 0 :(得分:5)
这是有效的C但无效的C ++。 (C ++没有隐式地从void*
强制转换:这就是为什么你倾向于在C ++程序员编写的C代码中malloc
中看到很多不必要的转换!)
在MSVC上,将文件重命名为扩展名.c
,一切都会好:MSVC为该扩展调用C编译器。