gcc 3.2.2 warning: dereferencing `void *' pointer
글쓴이: down7town / 작성시간: 월, 2003/11/03 - 10:40오전
gcc 3.2.2를 사용하는데, C에서
now_element->data->time
이런형태로 포인터를 넘겨주니 계속해서 저런 워닝을 띄우내요..
중간에 형으로 받아서 넘겨주면 워닝은 없어지는것 같은데, 무시해도 되는건지
궁금합니다.
Elmtdata *elementdata;
St_time *sttime;
elementdata=now_element->data;
sttime=elementdata->time;
꼭 이렇게 중간 과정이 필요한지...?
Forums:
void *형이 기본적으로 데이타 타입이 지정되어 있지 않기 때문에 나오
void *형이 기본적으로 데이타 타입이 지정되어 있지 않기 때문에 나오는 warning인 것으로 압니다...
중간과정으로 따로 변수를 선언하는 것 대신 다음처럼 casting하셔도 가능합니다.
(St_time *)((Elmtdata *)now_element->data)->time
다만 너무 길어지면 보기에 안 좋으므로 크게 문제가 되지 않으면 변수 선언해서 assign하는 것도 괜찮다고 생각합니다.
근데 무시해도 되는건지는 잘 모르겠네요... casting이든 assign이든 제대로 형변환이 되어 있지 않다면 나중에 데이타가 꼬이는 일이 생길 수도 있지 않을까요?
노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5
댓글 달기