[완료] 요즘 tcpdump소스를 보다보니

gomtingingan의 이미지

현재 tcpdump를 보면서 프로그램을 만들려고 하는데요.....간단한 패킷캡처부터 앞으로 공부하면서 만들어나가면서 몇년후까지 계속보완하려고요

헌데 거기서보니

typedef u_int (*if_printer)(const struct pacp_pkthdr *, const u_char *);

이렇게 나와있습니다.

이 자체의 의미는 무엇인가요..?

따로 정의되어있는 u_int를 *if_printer형으로 변환을 하는데 const struct pacp_pkthdr *, const u_char *

이 두가지를 가지고 있는 것인가요..?

흠 확실히 몰라서 질문을 합니다.

goguma의 이미지

typedef u_int (*if_printer)(const struct pacp_pkthdr *, const u_char *);
u_int 형을 반환값으로 가지고 (const struct pacp_pkthdr *, const u_char *)를 인자로 받는
함수를 가리키는 포인터 형을 (*if_printer)로 재정의 한거 아닌가요..?ㅋ

u_int fun1(const struct pacp_pkthdr *, const u_char *);
u_int fun2(const struct pacp_pkthdr *, const u_char *);
이렇게 쓰기보단..

if_printer fun1;
if_printer fun2;
이런식으로 간단하게 쓰려고 그런듯...ㅋㅋ
--------------------------------
스물셋.. 독립.. 열심히 살아보자!!
--------------------------------

--------------------------------
스물셋.. 독립.. 열심히 살아보자!!
--------------------------------

라키시스의 이미지

Quote:

u_int fun1(const struct pacp_pkthdr *, const u_char *);
u_int fun2(const struct pacp_pkthdr *, const u_char *);

윗분이 거의정확하게 설명해 주셨는데요,

u_int (*fun1)(const struct pacp_pkthdr *, const u_char *);

if_printer fun1;

로 간단히 쓸 수 있게 해 줍니다.

혹은

typedef u_int if_printer(const struct pacp_pkthdr *, const u_char *);
if_printer *fun1;

과 같이 표현할 수도 있습니다.