【发布时间】:2015-06-17 11:44:16
【问题描述】:
我正在尝试使用 void 指针将一个函数作为参数传递给另一个函数,但它不起作用
#include "header.h"
void print ( void *Arg )
{
// while ( ( int *) Arg[0] )
{
printf ( "Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int * ) Arg[1] );
sleep ( 1 );
//Arg[0]--;
//Arg[1]--;
}
}
void main(int argc, char **argv)
{
int count[2] = { 10, 160};
print (count);
}
我收到这样的错误:
void*.c: In function ‘print’:
void*.c:6:52: warning: dereferencing ‘void *’ pointer [enabled by default]
printf ( "Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int * ) Arg[1] );
^
void*.c:6:3: error: invalid use of void expression
printf ( "Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int * ) Arg[1] );
^
void*.c:6:69: warning: dereferencing ‘void *’ pointer [enabled by default]
printf ( "Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int * ) Arg[1] );
^
void*.c:6:3: error: invalid use of void expression
printf ( "Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int * ) Arg[1] );
我该如何解决这个问题?
【问题讨论】:
-
您不能使用
void*指针来访问数组,因为它不知道每个元素的大小。 -
void main()-->int main() -
由于
print函数只有在传递指向int的指针时才能工作,所以我不知道您为什么要通过与void*之间的转换来使生活变得困难。
标签: c linux pointers compiler-errors void-pointers