void test(void *a)
{
int *h = a; //error
}
int main(int argc, char const* argv[])
{
int z = 13;
test(&z);
return 0;
}
如果我想保留测试功能的void * a,我怎样才能让错误线工作?
答案 0 :(得分:4)
我可以使用gcc
编译并运行以下内容,而不会发出警告或错误:
#include <stdio.h>
void test(void *a)
{
int *h = a;
printf("test: %d\n", *h);
}
int main(int argc, char const* argv[])
{
int z = 13;
test(&z);
return 0;
}
您指定的行上唯一可能的原因是您使用的是C ++编译器(g++
可能?)。如果我尝试,我会收到以下错误:
error: invalid conversion from ‘void*’ to ‘int*’
如果您需要使用C ++编译器,则需要将a
显式转换为int *
:
int *h = (int *) a;
这一个更改允许此代码也使用g++
进行编译。