2009-12-18 4 views
0

아래이 둘 사이의 차이는 무엇인가?함수 포인터 쿼리

+2

컴파일러가 컴파일 할 때 컴파일러에서 무엇을 말합니까? 어떻게해야한다고 생각하니? –

답변

7

첫 번째 유형은 my_destructor이라고 선언합니다. 이 유형은 void* 유형의 매개 변수를 취하고 아무 것도 반환하지 않는 함수에 대한 포인터입니다.

두 번째 것은 유효하지 않습니다. 당신은 무엇을하려합니까? 당신이 유형 my_destructor의 변수를 선언 할 경우, 당신은이 작업을 수행해야한다 : 당신은 포인터 함수에 대한 유형을 선언하는

typedef void (*my_destructor)(void *); 
my_destructor my_func_ptr; 
+1

타입의 이름을 지정하지 않고 그 타입의 변수를 선언하고 싶다면'void (* my_func_ptr) (void *);'. 그러나 실제로는 함수 포인터 유형의 이름을 지정해야합니다. 전체 포인터를 여러 곳에서 반복하여 반복하기 때문에 오류가 발생하기 쉬운 많은 번거 로움 때문입니다. –

1

. 첫 번째 인자는 인수에 대해 void 포인터 (void *)을 가져오고 아무 것도 반환하지 않는 (void) 함수 (*my_destructor)에 대한 포인터 인 my_destructor라는 유형이라는 의미입니다.

이제 유형을 char, long 또는 기타와 같은 다른 유형으로 사용할 수 있습니다.