[질문] DHCP 소스를 보다가...

래리버드의 이미지

지금 DHCP소스를 보고 있는데요..
좀 이해가 안 되는 부분이 있어서요..
분명 함수 호출같은데.. 여지껏 봐왔던거랑 틀려서 질문 올립니다.

 /* Set up the bootp packet handler... */
    bootp_packet_handler = do_packet;

bootp_packet_handler 선언을 이렇게 되있고요.

void (*bootp_packet_handler) PROTO ((struct interface_info *,
                     struct dhcp_packet *, int, unsigned int,
                     struct iaddr, struct hardware *));

do_packet 선언을 이렇습니다.

void do_packet PROTO ((struct interface_info *,
               struct dhcp_packet *, int, 
               unsigned int, struct iaddr, struct hardware *));

좀 추상적인 질문인거 같은데, 과연 함수 호출하는것이 맞는지, 맞으면
왜 변수 선언을 저런식으로 했는지 궁금하군요..
답변 부탁드리겠습니다.
즐거운 하루 되세요.

charsyam의 이미지

래리버드 wrote:
지금 DHCP소스를 보고 있는데요..
좀 이해가 안 되는 부분이 있어서요..
분명 함수 호출같은데.. 여지껏 봐왔던거랑 틀려서 질문 올립니다.

 /* Set up the bootp packet handler... */
    bootp_packet_handler = do_packet;

bootp_packet_handler 선언을 이렇게 되있고요.

void (*bootp_packet_handler) PROTO ((struct interface_info *,
                     struct dhcp_packet *, int, unsigned int,
                     struct iaddr, struct hardware *));

do_packet 선언을 이렇습니다.

void do_packet PROTO ((struct interface_info *,
               struct dhcp_packet *, int, 
               unsigned int, struct iaddr, struct hardware *));

좀 추상적인 질문인거 같은데, 과연 함수 호출하는것이 맞는지, 맞으면
왜 변수 선언을 저런식으로 했는지 궁금하군요..
답변 부탁드리겠습니다.
즐거운 하루 되세요.

음냐... do_packet 은 함수고, bootp_packet_handler 은 함수 포인터
고 별로 이상한것은 없는데요. PROTO는 보통 그냥 아무것도 없는 상태로
선언해서 많이 쓰던데... 별로 이상한것 안보이는것 같네요.

그럼 고운 하루...

=========================
CharSyam ^^ --- 고운 하루
=========================

cjh의 이미지

함수 호출이 아니라 그냥 함수 포인터를 대입할 뿐입니다. 어디 다른데에서 호출하는 부분이 있겠지요.

--
익스펙토 페트로눔