J'ai utilisé des pointeurs de fonction dans c pour créer une structure générique. Lorsque j'appelle une fonction spécifique, l'un des paramètres est un paramètre de sortie. J'attribue la mémoire à l'intérieur de la fonction spécifique mais cela ne fonctionne pas. aimerait de l'aide!Passage et allocation de pointeur sur void * dans c
typedef void *PhaseDetails;
typedef Result (*Register)(const char *, PhaseDetails *);
Result Func(const char *file, Register register1){
PhaseDetails firstPhase = NULL;
Result res = register1(file, &firstPhase);
}
int main() {
OlympicSport os = Func("men100mList.txt", (Register) registerMen100m);
return 0;
}
Result registerMen100m(const char *file,
Men100mPhaseDetails *firstPhase) {
firstPhase = malloc(sizeof(*firstPhase));
if (firstPhase == NULL) {
return OG_MEMORY_ALLOCATION_FAILED;
}
*firstPhase = malloc(sizeof(**firstPhase));
(*firstPhase)->phaseName = malloc(sizeof(char)*12);
return OG_SUCCESS;
}
le problème est que les firstPhase
retours que NULL
Vous n'appelez jamais 'Func'. Cela devrait-il être 'Result osCreate'? – Barmar
Parce que le paramètre est passé par valeur (ou copier si vous préférez), il n'est pas modifié par la fonction (fonction modifie sa copie). Ajouter un autre niveau d'indirection. (Notez que la plupart de votre code est faux, mauvais appels de fonction, types, etc). –
que voulez-vous dire par "Ajouter un autre niveau d'indirection"? – ylilit