我收到此警告,并why了一下原因。我在这里发现许多线程可以解决VS 2017编译器中的此警告,但不能解决此特定组合:为什么int **与int [X] [Y]的间接级别不同?
下面是一个生成警告的精简示例:
void testfunc(int ** input, int ** output) {
/*
* Do something
*/
}
int main()
{
int firstvar[2][4];
int secondvar[2][4];
testfunc(firstvar, secondvar);
}
我得到:
testcode.c(46):警告C4047:'function':'int **'在间接级别上不同于'int [2] [4]'
任何关于为什么会这样或如何解决它的想法都值得赞赏。
答案 0 :(得分:2)
void testfunc(int input[][4], int output[][4])
将是一种更好的方式来传递这一点。请注意,int **似乎表明它是一个int *的数组,不是。
void onedimension_testfunc(int *odinput, int *odoutput)
{
...
}
int main ()
{
int odfirst[4], odsecond[4];
onedimention_testfunc(odfirst, odsecond);
}
在一维中,上述代码可以正常工作。那是因为上面代码中的odinput / odoutput指向一个整数数组。但不适用于多个维度。