Comment déclarer le pointeur de fonction dans l'en-tête et le fichier c?
Je suis un peu confus sur la façon de déclarer un pointeur de fonction dans un fichier d'en-tête.
Je veux l'utiliser en principal et d'un fichier appelé les menus.c et de le déclarer dans les menus.h je suppose.
Nous voulons initialiser le point d'une certaine fonction.
il ressemble à ceci:
void (*current_menu)(int);
Que faisons-nous écrire dans les menus.c, menus.h et principal?
source d'informationauteur user1106072
Vous devez vous connecter pour publier un commentaire.
Un pointeur de fonction est toujours un pointeur, c'est encore une variable.
Si vous voulez une variable à être visible à partir de plusieurs fichiers source, la solution la plus simple est de déclarer qu'il
extern
dans un en-tête, avec la définition d'ailleurs.Dans un en-tête:
Dans un fichier source:
Il est souvent utile d'utiliser
typedef
avec des pointeurs de fonction, de sorte que vous pouvez nommer le type de descriptif:Alors que vous auriez une variable globale de ce type, probablement dans les menus.c, et déclaré (avec
extern
) dans les menus.h:De main.c, vous pourrez alors faire:
d'appel quelle que soit la fonction qui est actuellement pointée par
current_menu
.Un pointeur de fonction n'a pas de définition de la fonction. Il n'est rien de plus qu'un pointeur vers un type, le type spécifié par le type de retour de la fonction et la liste des paramètres. Ce que vous devez faire est de définir une fonction avec la même liste de paramètres et le type de retour, puis utilisez votre pointeur de fonction qui retient que l'adresse de la fonction. Vous pouvez ensuite appeler la fonction par l'intermédiaire du pointeur.