attendu ‘struct matrix_t *", mais l'argument est de type ‘struct matrix_t *’ ?_? pas de différence
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 *’
la ligne 6 est la matrix_multiply fonction
voici mon code qui commence à la ligne 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);
et voici mes prototypes de fonction et de la 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);
Je ne comprends vraiment pas ces message d'erreur. Merci de m'aider 🙂
OriginalL'auteur yakoudbz | 2012-03-23
Vous devez vous connecter pour publier un commentaire.
Votre définition de type devriez lire
Autrement, le type
matrix_t
se réfère à une complète mais sans nom de type de structure, alors questruct matrix_t
se réfère à une autre, nommée mais incomplète type de structure qui vous n'avez jamais définir.OriginalL'auteur Christoph
Changer votre
struct
définition:Remarquer la différence?
struct matrix_t
n'est pas le même quetypedef ... matrix_t
; ils n'existent que dans des espaces de noms différents; ainsi, dans la version de votre code, le compilateur suppose questruct matrix_t *next
se réfère à un autre, de type incomplète.OriginalL'auteur Oliver Charlesworth
Aha, vous n'avez pas de
struct matrix_t
encore lanext
champ est déclarée à l'aide d'une structure de la balise. Cela provoque alors des problèmes à chaque fois que lenext
champ est utilisé.matrix_t
pourrait être à la fois une structure d'une étiquette et un nom de type, comme ils le sont dans des espaces de noms différents, mais comme il est, votre définition commence par...pas...
En d'autres termes, vous avez un sans nom struct qui a un typedef appelé
matrix_t
mais vous n'avez jamais réellement définir unstruct matrix_t.
OriginalL'auteur DigitalRoss