Struct en c
Résolu/Fermé
zizou1991
Messages postés
153
Date d'inscription
mardi 18 septembre 2012
Statut
Membre
Dernière intervention
10 septembre 2015
-
1 sept. 2015 à 12:19
zizou1991 Messages postés 153 Date d'inscription mardi 18 septembre 2012 Statut Membre Dernière intervention 10 septembre 2015 - 2 sept. 2015 à 23:14
zizou1991 Messages postés 153 Date d'inscription mardi 18 septembre 2012 Statut Membre Dernière intervention 10 septembre 2015 - 2 sept. 2015 à 23:14
2 réponses
[Dal]
Messages postés
6202
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
14 janvier 2025
1 097
Modifié par [Dal] le 1/09/2015 à 13:15
Modifié par [Dal] le 1/09/2015 à 13:15
Salut zizou1991,
Ton code déclare une struct comprenant 3 membres, qui se comprennent de la façon suivante, sauf erreur :
Dal
Ton code déclare une struct comprenant 3 membres, qui se comprennent de la façon suivante, sauf erreur :
long* __private; // 1"__private" est un pointeur sur un long
void (*action)(void *);"action" est un pointeur sur une fonction ne retournant rien (void) et comprenant un paramètre qui est un pointeur générique (pointeur void *)
LIST_ENTRY(event) list;déclare un membre appelé "list", mais est plus énigmatique. Il se peut que LIST_ENTRY soit définie ailleurs dans le code comme une macro prenant un argument, et que la définition de cette macro soit nécessaire pour comprendre comment est déclaré ce membre.
Dal
zizou1991
Messages postés
153
Date d'inscription
mardi 18 septembre 2012
Statut
Membre
Dernière intervention
10 septembre 2015
1
Modifié par zizou1991 le 2/09/2015 à 10:48
Modifié par zizou1991 le 2/09/2015 à 10:48
Merci Dal pour ta réponse
je crois que la notation __private a une signification dans C
Quant à LIST_ENTRY()
Il s'agit d'un macro prédefini dans C mais je sais pas son utilité
Qu'est ce que c'est un pointeur sur fonction
La réussite, c'est un peu de savoir, un peu de savoir-faire et beaucoup de faire-savoir.
je crois que la notation __private a une signification dans C
Quant à LIST_ENTRY()
Il s'agit d'un macro prédefini dans C mais je sais pas son utilité
Qu'est ce que c'est un pointeur sur fonction
La réussite, c'est un peu de savoir, un peu de savoir-faire et beaucoup de faire-savoir.
[Dal]
Messages postés
6202
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
14 janvier 2025
1 097
Modifié par [Dal] le 2/09/2015 à 15:05
Modifié par [Dal] le 2/09/2015 à 15:05
Salut zizou1991 :-)
Je ne crois pas. En C standard, en revanche, les variables préfixées d'underscore ne devraient pas être utilisées. Elles sont réservées à l'implémentation du C.
Le mot private évoque une variable privée dans un contexte objet (des notions qui n'existent pas en C, l'underscore initial est aussi utilisé comme convention dans certains langages orientés objet pour nommer des variables privées).
LIST_ENTRY n'est pas définie par le C standard, mais elle existe effectivement dans certaines implémentations. Sous Linux la page de manuel https://linux.die.net/man/3/list_entry indique qu'elle fait partie d'un groupe de macros définies dans
Les pointeurs sur fonctions sont .. des pointeurs sur des fonctions :-) Ils permettent d'écrire du code générique : une même ligne dont l'objet est d'appeler une fonction peut exécuter dynamiquement des fonctions différentes, en affectant le pointeur vers la fonction à exécuter à l'exécution.
Tu as une illustration expliquée d'un usage de pointeurs sur des fonctions ici : https://blog.rolinh.ch/dev/les-pointeurs-sur-fonction-en-c/
Ce bout de code vient d'où ?
Dal
je crois que la notation __private a une signification dans C
Je ne crois pas. En C standard, en revanche, les variables préfixées d'underscore ne devraient pas être utilisées. Elles sont réservées à l'implémentation du C.
Le mot private évoque une variable privée dans un contexte objet (des notions qui n'existent pas en C, l'underscore initial est aussi utilisé comme convention dans certains langages orientés objet pour nommer des variables privées).
LIST_ENTRY n'est pas définie par le C standard, mais elle existe effectivement dans certaines implémentations. Sous Linux la page de manuel https://linux.die.net/man/3/list_entry indique qu'elle fait partie d'un groupe de macros définies dans
<sys/queue.h>qui permettent de définir et utiliser des structures de données.
Les pointeurs sur fonctions sont .. des pointeurs sur des fonctions :-) Ils permettent d'écrire du code générique : une même ligne dont l'objet est d'appeler une fonction peut exécuter dynamiquement des fonctions différentes, en affectant le pointeur vers la fonction à exécuter à l'exécution.
Tu as une illustration expliquée d'un usage de pointeurs sur des fonctions ici : https://blog.rolinh.ch/dev/les-pointeurs-sur-fonction-en-c/
Ce bout de code vient d'où ?
Dal
zizou1991
Messages postés
153
Date d'inscription
mardi 18 septembre 2012
Statut
Membre
Dernière intervention
10 septembre 2015
1
2 sept. 2015 à 23:14
2 sept. 2015 à 23:14
Merci beaucoup Dal pour ta disponibilité et pour ton aide
Ce bout de code vient d'une implémentation d'un esclave dans un contexte réseau.(ERT)
Ce bout de code vient d'une implémentation d'un esclave dans un contexte réseau.(ERT)