본문 바로가기

프로그래밍/리눅스

inet_ntoa 64bit 사용시 에러 대처방법





32비트에 컴파일할 때 문제가 없던 일들이..

64비트에서 일어난 경우 중 하나입니다.

inet_ntoa() 이 함수

컴파일 에러는 없지만.. 이 함수가 실행하는 시점에서 Segment fault 라는 메시지를 접하실겁니다.


해결방법은..

간단히 헤더에 한줄만 추가해주면됩니다.

#include <arpa/inet.h>


그리고 기존에 아래와 같이 코딩하고 계셨다면..

printf("%s ", inet_ntoa(ip->saddr));


아래와 같은 에러를 접하셨을겁니다.

error: incompatible type for argument 1 of ‘inet_ntoa’


간단히 해석해보면 inet_ntoa() 함수의 인자값이 잘못된다는 얘기입니다

아래와 같이 수정하시면 해결이 됩니다.

printf("%s ", inet_ntoa(*(struct in_addr *)&ip->saddr));