main.c:78:25: erreur: assignment from incompatible pointer type [-Werror]
main.c:81:9: erreur: 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 begin 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 function prototypes and structure
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 these error message. Please help me :)
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.
Change your struct
definition to this:
typedef struct matrix_t {
int **M;
int nLi;
int nCo;
struct matrix_t *next;
} matrix_t;
Notice the difference?
struct matrix_t
is not the same as typedef ... matrix_t
; they exist in different namespaces; so in your version of the code, the compiler assumes that struct matrix_t *next
refers to a different, incomplete type.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With