main.c:78:25: error: assignment from incompatible pointer type [-Werror]
main.c:81:9: error: passing argument 2 of ‘matrix_multiply’ from incompatible pointer type [-Werror]
main.c:6:11: note: expected ‘struct matrix_t *’ but argument is of type ‘struct matrix_t *’
Line 6 is the matrix_multiply
function
Here is my code, which begins at line 74:
matrix_t *m;
matrix_t *first = matrix_reader_next(reader);
matrix_t *previous = first;
while ( (m = matrix_reader_next(reader))) {
previous->next = m;
previous = m;
}
matrix_t *result = matrix_multiply(first,first->next);
And here are my functions prototypes and struct:
typedef struct {
int **M;
int nLi;
int nCo;
struct matrix_t *next;
} matrix_t;
matrix_t* matrix_multiply(matrix_t* first, matrix_t*second);
matrix_t* matrix_reader_next(matrix_reader_t *r);
I really don't understand this error message.
Your type definition should read
typedef struct matrix_t {
int **M;
int nLi;
int nCo;
struct matrix_t *next;
} matrix_t;
Otherwise, the type matrix_t
refers to a complete but unnamed structure type, whereas struct matrix_t
refers to a different, named but incomplete structure type which you never define.