C에서 함수 리턴값 캐스팅...
글쓴이: vananamilk / 작성시간: 목, 2005/10/06 - 6:17오후
안녕하세요...
C에서 아마 함수호출할때요...
(void) function(xxx,xxx);
이런식으로 앞에 캐스팅을 해 주는 이유가 먼가요?
펑션의 리턴타입이 void인거 같은데...
assignment 할때는 명시적인 캐스팅을 보통 해 주는데
이럴경우는 왜 캐스팅 하는지 궁금합니다.
그럼.
Forums:
보통 저런 경우 함수의 결과값은 무시되기 때문에 따로 명시적으로 캐스팅을
보통 저런 경우 함수의 결과값은 무시되기 때문에 따로 명시적으로 캐스팅을 해 줄 필요는 없습니다. 단지 선임자의 전통이거나, 경고 메시지를 없애기 위함이거나, 아니면 해당 환경만의 독특한 특성(뭔지는 모릅니다) 때문이겠지요.
함수 호출을 할떄 앞에다가 (void)를 붙이면 함수가 수행
함수 호출을 할떄 앞에다가 (void)를 붙이면 함수가 수행후 리턴을 할때 실제로 리턴값을 스택에다가 쓰지 않게 됩니다.
리턴 값이 있는 함수는 그 함수를 호출 한 곳에서 리턴 값을 사용하지 않더라도 스택에다가 리턴 값을 쓰게 됩니다. 이런 필요 없는 일을 안하게 하기 위해서 (void)를 써주면 이런 리턴값을 명시적으로 사용하지 않는다고 표시하는 것이 됩니다.
ps. 컴파일러가 최적화를 하면서 리턴값을 사용하지 않는 함수 호출은 알아서 리턴값을 스택에 쓰게 하지 않는다면 필요가 없겠지만요.. :(
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
댓글 달기