Compiler Error 167
argument of type <type1> is incompatible with parameter of type <type2>¶
This error means that you are calling a routine which takes a parameter of type2 but you are passing in a variable of type1.
Example:
#include "mbed.h"
// Function which takes a pointer to a char* buffer.
void BufferRead(char* pBuffer)
{
*pBuffer = 'h';
}
int main()
{
void* pvBuffer = malloc(42);
// Calling BufferRead with a void* pointer instead of a char* pointer.
BufferRead(pvBuffer); // *** This is the line which generates the error. ***
return 0;
}
This code would generate the following error for the line flagged in the example.
argument of type void* is incompatible with parameter of type char*
The solution in this case is to cast the void* pointer to type char* as in the following snippet:
BufferRead((char*)pvBuffer);
This error could occur in C code which is ported to the mbed cloud compiler as it always compiles source code as C++. In C, the compiler will automatically cast a void* pointer to char* but C++ enforces stricter type checking and generates this error.
The error may also be encountered if you have passed the parameters in the wrong order.