-3
void test(void *a)
{
int *h = a; //error
}
int main(int argc, char const* argv[])
{
int z = 13;
test(&z);
return 0;
}
如果我想保留void * a作为测试函数,我该如何获得错误行工作?在C中传递int引用?
void test(void *a)
{
int *h = a; //error
}
int main(int argc, char const* argv[])
{
int z = 13;
test(&z);
return 0;
}
如果我想保留void * a作为测试函数,我该如何获得错误行工作?在C中传递int引用?
我能够编译和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++
以及。
与MSVC相同 - 添加行解引用'* h'不会产生警告或错误。 –
这是完全有效的C代码。我的猜测是你正在使用C++编译器,在这种情况下,你需要在你的'test'函数中明确地将'a'转换为'int *'。 –
什么是错误,我得到的是一个*未使用变量'h'的警告(使用'-Wall')* – cdarke