[질문~] 'sAddr.s_addr=lAddr' IP주소관련인듯한데 잘모르겠습니
#ifdef _LINUX
sAddr.s_addr = lAddr;
#else
sAddr.S_un.S_addr = lAddr;
#endif
소스파일분석하다가 이런부분이 나왔거등요.
_LINUX 가 있으면 위에꺼 없으면 아래꺼 실행은 맡는거죠?
근데 위에꺼가 아니라 아래꺼를 실행하는 모양인데
다음과 같은 컴파일 에러가 납니다.
structure has no member named `S_un'
`Addr' undeclared (first use in this function)
이 에라의 의미를 잘 모르겠어요.
소스파일의 처음에는 다음과 같이 헤더부분의 정의돼있씁니다.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
헤더부분중 뭐가 빠져서 그런가요? (그런것같아요. 파일검색으로 관련소스 다 뒤져도 S_addr, S_un 이란 부분이 안나와욧~ ㅡ.ㅜ);
고수님들 혹시 아시면 가르쳐 주시면 감사하겠습니다. ^^
Linux용으로 컴파일하려면 매크로 _LINUX가 정의되어 있어야 하는
Linux용으로 컴파일하려면 매크로 _LINUX가 정의되어 있어야 하는 것 같습니다. 딸려온 build script (예를 들면 Makefile)를 쓰시기를 권하며, 정 없다면 컴파일러(gcc)에 -D_LINUX 옵션을 주어 해결할 수 있을 것 같습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기