我的代码需要将数组传递给一个void指针。 无法修改此结构(void * ) )。 以下两个版本的代码生成相同的输出,但后者有两个警告。 我的问题是两种方法哪个更受欢迎。 有强制删除警告的方法吗?
此版本没有警告,可以获得预期的输出:
#包含
void测试(void * var _ arr,char var_1);
类型定义结构{
char chip;
Void *缓冲器;
}test_struct;
int main () )
{
int test _ array [3]={ 3,7,5 };
char var_1=0x20;
printf(Hello,World! n ';
test(test_Array,var_1;
返回0;
}
void测试(void * var _ arr,char var_1) )。
{
int i;
test_struct var_ts;
var_ts.chip=var_1;
var_ts.buffer=var_arr;
for(I=0; i3; I )
printf ((nthedatavaluesare : % x (n (r ),* ) ) (var_ts.buffer i ) );
}
你好,世界!
数据值为3
数据值为7
数据值为5
以下版本有两个警告,但编译以生成预期的输出。
警告:在source_file.c :函数' main '中,为source_file.c:17:10 :警告:不兼容的指针类型test(&; 从test_array,var_1)传递' test ' ^ source _ file.c:3:6 :注意:预期为“int”,但参数类型为“int ()”[3] '
#包含
voidtest(int*var_arr,char var_1);
类型定义结构{
char chip;
Void *缓冲器;
}test_struct;
int main () )
{
int test _ array [3]={ 3,7,5 };
char var_1=0x20;
printf(Hello,World! n ';
test(test_Array,var_1;
返回0;
}
voidtest(int*var_arr,char var_1) ) )。
{
int i;
test_struct var_ts;
var_ts.chip=var_1;
var_ts.buffer=(void * ) var_arr;
for(I=0; i3; I )
printf (nthedatavaluesare : % x (n (r ),* ) ) (var_ts.buffer i );
}