일반 구조체를 만들기 위해 함수 포인터를 사용했습니다. 특정 함수를 호출 할 때 매개 변수 중 하나가 출력 매개 변수입니다. 특정 함수 안에 메모리를 할당하지만 작동하지 않습니다. 도움이 될거야!c에서 void *에 포인터를 전달하고 할당
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;
}
문제는 NULL
'Func'을 절대로 호출하지 않습니다. '결과 osCreate'해야합니까? – Barmar
매개 변수가 값으로 전달 되었기 때문에 (또는 원하는 경우 복사) 매개 변수가 함수에 의해 수정되지 않습니다 (함수는 함수의 복사본을 수정 함). 다른 수준의 간접 참조를 추가하십시오. (대부분의 코드는 잘못되었거나 잘못된 함수 호출, 유형 등). –
"다른 수준의 간접 지정 추가"는 무엇을 의미합니까? – ylilit