에서 void (*) (void *) 위 경고를 받고 이해하고 있지만이를 수정하는 방법을 알지 못합니다. 내 코드는 아래에 있지만, 기본적으로 구조체에 함수 포인터를 저장하고 내 메인에서 호출하는 다른 함수에서 구조체를 초기화하는 것입니다. 코드는 기본 함수 (예 : free())와 함께 사용할 때 컴파일되는 것처럼 보이지만 아래 test_func 함수와 함께 사용할 때는 컴파일되지 않습니다. 생각?함수 포인터 호환되지 않는 포인터 형식 void (my_type *)
구조체 :
typedef struct my_struct {
my_type **double_pointed;
int num;
void (*funcp)(void *data);
} my_struct_t;
초기화 기능 : 내가 가리 할
my_struct_t *init(int num, void (*my_funcp)(void *data)) {
// unimportant code to the problem, but basically just some mallocs for the other data
my_struct_t *my_str;
my_str->funcp = my_funcp;
return struct;
}
기능 :
void desired_func(my_type *obj) {}
초기화 FUNC에 내 전화 :
init(5, desired_func);
,
전체 오류 :
호환 포인터 유형에 할당 '무효 (*) (공극 *)' '무효 (my_type *)'상기 초기화 기능의 라인
에서 :
my_struct_t *my_str;
my_str->funcp = my_funcp;
문제는 모든 데이터 유형에 대해 작동해야한다는 것입니다. 따라서 void * – bobbyyu10
@ bobbyyu10 : 나는 지금도이를 처리했습니다. –
'void *'로 변환하거나 변환하는 것은 캐스트를 필요로하지 않으므로'my_type * obj = vobj;'이면 충분합니다. – user3386109