함수 포인터를 인수로 취하는 C 함수가 있습니다.이 함수는 프로그램 끝에서 호출 할 소멸자입니다. 여기 내 함수의 프로토 타입입니다 :C : 함수 포인터와 typedef 문제
int store_dest(void (*routine)(void *));
다른 정보가있는 구조에이 함수 포인터를 저장하고 싶습니다. 좋은 구조체를 갖기 위해서이 함수 포인터에 typedef를 갖고 싶습니다. 여기 내 타입 정의입니다 : 여기
typedef void (*my_destructor)(void *);
그리고 것은 내 구조입니다 : 내가 내 함수에 '도착'필드를 설정하고자하는 초기화 단계에서
typedef struct my_struct{
my_destructor dest;
other_info ...
} my_struct;
, 여기의 프로토 타입입니다 이 기능 : I가 "my_dummy_dest"내 구조의 '도착'필드를 설정하려고 할 때
void* my_dummy_dest(void* foo);
문제 (그냥 경고하지만 난 그것을 억제하고 싶습니다의 사실)가 발생합니다 :
난 그냥 그들을 비교할 때같은 : "호환되지 않는 포인터 유형에서 할당 경고": 나는 "경고 얻을
if (my_struct.dest == &my_dummy_dest)
: 별개의 포인터 타입의 비교를 캐스팅 부족
my_struct.dest = &my_dummy_dest;
는 내가 얻을 "
그러나"dest "필드를 다른 루틴으로 설정하면 경고 메시지가 표시되지 않습니다. 나는 왜 나는 그 경고가 있는지 알지 못한다.
oups가되어야합니다. 나는 그걸 어리석은 짓이라고 생각했습니다. :) – claf