[C] Problème liste chainée (débutant)
Résolu
marouane87
Messages postés
110
Date d'inscription
Statut
Membre
Dernière intervention
-
marouane87 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
marouane87 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train d'essayé de créer une liste chainée. Chaque structure est composé d'une fonction et d'un pointeur à l'élément suivant. J'ai crée donc un nouveau élement et en essaynt d'attribuer sa fonction je tombe sur ce problème, il m'affiche l'erreur suivante que je n'arrive pas à résoudre:
error C2659: '=' : function as left operand
La partie que j'essaie de coder est la suivante:
typedef struct block block;
struct block
{
void eval();
struct block *suivant;
};
struct block *struct_clip = malloc(sizeof(block));
struct_clip->eval = clip;
Je vous remercie pour toute aide.
Je suis en train d'essayé de créer une liste chainée. Chaque structure est composé d'une fonction et d'un pointeur à l'élément suivant. J'ai crée donc un nouveau élement et en essaynt d'attribuer sa fonction je tombe sur ce problème, il m'affiche l'erreur suivante que je n'arrive pas à résoudre:
error C2659: '=' : function as left operand
La partie que j'essaie de coder est la suivante:
typedef struct block block;
struct block
{
void eval();
struct block *suivant;
};
struct block *struct_clip = malloc(sizeof(block));
struct_clip->eval = clip;
Je vous remercie pour toute aide.
A voir également:
- [C] Problème liste chainée (débutant)
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Site dangereux liste - Guide
- Logiciel de programmation pour débutant - Guide
2 réponses
Salut,
Enfait dans ta structure quand tu écris "void eval();" tu déclare un prototype de fonction. Ce que tu veux toi c'est stocker un champ, pointeur sur fonction pour pouvoir l'utiliser. La déclaration de pointeur sur fonction est:
type_retour (*nom_pointeur)(args...)
Dans ton cas: "void (*eval)();"
Tu trouveras facilement de la doc sur les pointeur sur fonction
http://www.newty.de/fpt/zip/f_fpt.pdf
Cordialement,
Enfait dans ta structure quand tu écris "void eval();" tu déclare un prototype de fonction. Ce que tu veux toi c'est stocker un champ, pointeur sur fonction pour pouvoir l'utiliser. La déclaration de pointeur sur fonction est:
type_retour (*nom_pointeur)(args...)
Dans ton cas: "void (*eval)();"
Tu trouveras facilement de la doc sur les pointeur sur fonction
http://www.newty.de/fpt/zip/f_fpt.pdf
Cordialement,