看程序:
int main()
{
void a;
return 0;
}
编译错误。
int main()
{
void *a;
return 0;
}
编译运行正确。为什么呢? 因为C/C++不能定义通用类型的一般变量(长度不确定), 但是可以定义通用类型的指针(指针长度确定)。
然而, 上述程序有编译告警, 怎么消除呢?
int main()
{
void *a;
(void *)a;
return 0;
}
这种用法在实际开发中也会经常用到(主要是规避编译器警告)。当然, 下面这样也可以, 不过不太好:
int main()
{
void *a;
(void)a;
return 0;
}