함수 포인터에 대해서..

hogi2271의 이미지

linux 커널 소스를 보니 다음과 같은 typedef가 나오더군요.

typedef long syscall_handler_t(void);

사용은 (syscall_handler_t *)(new_syscall)(); 이런식으로 형변환하더군요.

보통 함수 포인터 사용하면 다음과 같이
typedef long (*syscall_handler_t)(void);
사용은 (syscall_handler_t)(new_syscall)(); 이랗게 사용하여왔는데..

후자는 확실히 함수 포인터라는 것을 인지 하겠습니다.

전자에서 (syscall_handler_t)(new_syscall)();
이건 어떤의미로 받아 드려야되는걸까요??

제가 뭔가 오류를 범하고 있어 제대로 생각을 못하고 있는걸까요..

라스코니의 이미지

typedef int INT;
int x = 10;
INT *PTR = &x;

*(INT *)PTR <== 10

이것과

typedef int* PINT;
int x = 10;
PINT PTR = &x;

*(PINT)PTR <== 10

같다고 보시면.....