I have seen a function whose prototype is:
int myfunc(void** ppt)
This function is called in a C file as a = myfunc(mystruct **var1);
where mystruct is typedef for one of structure we have.
This works without any compilation errors in MSVC6.0, But when I compile it with some other C compiler, it gives an error at the place where this function is called with error message:
Argument of type mystruct ** is incompatible with parameter of type void **
The argument of myfunc() is kept as void** because it seems to be a generic malloc kind of function to be called with various structure variable types for memory allocation
- Is there any type such as void ** allowed in C standard/any C compilers?
- How do I fix this? [I tried casting the function call argument to
mystruct**, but it didn’t work]
-AD
void**is valid but, based on your error message, you probably have to explicitly cast the argument as follows:That’s because the
myfuncfunction is expecting thevoid**type. Whilevoid*can be implicitly cast to any other pointer, that is not so for the double pointer – you need to explicitly cast it.