[완료]구조체 변수가 NULL인지 아닌지 검사방법
글쓴이: anaud2 / 작성시간: 월, 2009/01/12 - 6:55오후
안녕하세요
간단한건줄 알고 해보다가 조금 이해가 되질 않아서 질문을 드립니다.
구조체를 선언하고 구조체의 값을 누군가 선언을 했는지 안했는지 알아보기 위해 검사를 하는부분을 만들려 하는데
sockaddr_in clnt_sock;
....
if(clnt_sock == 0)혹은 if(clnt_sock == NULL) 로 했는데 컴파일시 에러가 발생을 합니다.
그러고 보니 구조체내의 특정변수에 값이 0인지는 간단히 되는데 구조체 전체가 0인지는 간단하게 검사가 안되는거 같네요
내부에 변수를 전부 검사해서 if문을 만들면 될거 같은데 그러면 큰~구조체는 문제가 될거 같구 음..갑자기 고민이 됩니다.
Forums:
NULL은 널 포인터, 즉
NULL은 널 포인터, 즉 포인터에 대한 값입니다.
sockaddr_in clnt_sock;
이건 포인터가 아니기 떄문에 NULL이 될수 없습니다.
질문을 읽어보면
질문을 읽어보면 문법을 잘못 이해하고 있는 것 같습니다.
아마도 memset(&clnt_sock, 0, sizeof(clnt_sock));
혹은 bzero(&clnt_sock, sizeof(clnt_sock));
이렇게 해놓았는지 아닌지 알아보려고 하시는 것 같은데
만약 그렇다면 이걸 확인하는 것 자체가 고약한 방법입니다.
굳이 하고 싶다면 따로 함수를 하나 만들어야합니다.
검사할 때는
하시면 됩니다.
:)
flag 를 하나 두는건 어떻습니까
구조체 멤버변수로
int used = FALSE;
같은걸 하나 추가하시고, 누군가 구조체에 값을 집어넣었다면 TRUE 로 바꾸도록 하면 되지 않겠습니까.
사이즈에 상관없이 구조체가 쓰였는지 아닌지 간단하게 검사 가능하겠지요.
추가) 글을 다시 읽어보니, 구조체를 고치지 못하는 상황인것도 같네요.;;
sockaddr_in *clnt_sock =
?
댓글 달기