警告 C4047:'int **' 的间接级别与 'int[2][4]' 不同
Warning C4047 : 'int **' differs in level of indirection from 'int[2][4]'
我收到了这个警告,并且摸不着头脑想知道为什么。我在这里发现许多线程解决了 VS 2017 编译器中的这个警告,但不是这个特定的组合:Why isn't int** the same level of indirection as 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): warning C4047: 'function': 'int **' differs in levels of indirection from 'int [2][4]'
任何关于为什么会这样或如何解决它的想法都非常感谢。
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 指向了一个整型数组。但不适用于多个维度。
我收到了这个警告,并且摸不着头脑想知道为什么。我在这里发现许多线程解决了 VS 2017 编译器中的这个警告,但不是这个特定的组合:Why isn't int** the same level of indirection as 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): warning C4047: 'function': 'int **' differs in levels of indirection from 'int [2][4]'
任何关于为什么会这样或如何解决它的想法都非常感谢。
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 指向了一个整型数组。但不适用于多个维度。