I'm getting this warning and scratching my head about why. I found many thread here that address this warning in VS 2017 compiler, but not this particular combination: why isn't int** the same level of indirection as int[X][Y]?
Here's a distilled down example that generates the warning:
void testfunc(int ** input, int ** output) {
/*
* Do something
*/
}
int main()
{
int firstvar[2][4];
int secondvar[2][4];
testfunc(firstvar, secondvar);
}
I get:
testcode.c(46): warning C4047: 'function': 'int **' differs in levels of indirection from 'int [2][4]'
Any thoughts on why this would be or how to fix it much appreciated.
void testfunc(int input[][4], int output[][4])
would be a better way to pass this. Please note int ** seems to indicate it is an array of int *, which it is not.
void onedimension_testfunc(int *odinput, int *odoutput)
{
...
}
int main ()
{
int odfirst[4], odsecond[4];
onedimention_testfunc(odfirst, odsecond);
}
In one dimension the above code works fine. Thats because odinput/odoutput in the above code points to an integer array. But not for multiple dimensions.