Dans le code ci-dessous, je lis un file.rec
dans main
et le mettre dans un char buf
. Puis je passe ce buf
et un pointeur de fonction pour la fonction getCallBack()
, mais je passe la fonction de deux façons disponibles. Cette fonction reçoit donc le pointeur de fonction normalement de deux manières. Je suis donc intéressé de savoir quelle est la différence pour l'utiliser ou non.lors de l'utilisation "&" opérateur dans les pointeurs de fonction?
#include<stdio.h>
void getCallBack(char buf[], void(*executeCallBack)(char[])){
printf("callback recived\n");
executeCallBack(buf);
}
void callBack(char buf[]){
printf("executing callback...\n");
printf("buf content: ");
printf("%s\n", buf);
}
void main() {
FILE *ReadingXmlFile = fopen("texto.rec", "r");
char buf[10000];
fread(buf, 1, 10000, ReadingXmlFile);
fclose(ReadingXmlFile);
printf("passing \"&callBack\"\n");
getCallBack(buf, &callBack);
printf("passing \"callBack\"\n");
getCallBack(buf, callBack);
//
}
Une fonction se désintègre naturellement en un pointeur vers lui-même, similaire à la façon dont un tableau se décompose en un pointeur vers son premier élément. Je recommande d'être explicite à ce sujet, et toujours utiliser l'opérateur d'adresse '&'. –