[질문] 함수호출앞에 캐스트시키는것은?
글쓴이: icanfly / 작성시간: 일, 2003/10/19 - 9:43오후
초보자용 리눅스 프로그래밍 책에 보면 저수준 시스템 콜인 write() 콜하는 부분에서 다음과 같은 코드를 볼 수 있습니다.
char *byte_to_write="A"; ... for(byte_count=0; byte_count < 100; byte_count++) { (void)write(file_desc, byte_to_write, 1); }
위에서 함수 호출 앞에 (void)를 굳이 써주는 이유가 먼지 궁금합니다.
안써도 별 상관 없을거 같은데....
그럼.답변 부탁드리겠습니다.
Forums:
man 페이지 보시면 write도 리턴값이 있습니다.void 쓸 필요
man 페이지 보시면 write도 리턴값이 있습니다.
void 쓸 필요는 없지만 명시적으로 리턴값을 사용하지
않는다는걸 표시한게 아닐지..
맞습니다. Lint와 같은 프로그램에서 경고를 내지 않게 하기 위해서?
맞습니다. Lint와 같은 프로그램에서 경고를 내지 않게 하기 위해서? 사용합니다. 무시하셔도 됩니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
그렇군요. 리턴값이 있는 함수를 쓸때 비록 리턴값을 받아서 사용하지
그렇군요. 리턴값이 있는 함수를 쓸때 비록 리턴값을 받아서 사용하지
않더라도 저렇게 하면 워닝을 없앨 수 있는 거였군요.
답변 감사합니다.
그럼...
위 링크에서 다음 글을 발견할 수 있었습니다.
Question 17.5
I came across some code that puts a (void) cast before each call to printf. Why?
printf does return a value, though few programs bother to check the return values from each call. Since some compilers (and lint) will warn about discarded return values, an explicit cast to (void) is a way of saying ``Yes, I've decided to ignore the return value from this call, but please continue to warn me about other (perhaps inadvertently) ignored return values.'' It's also common to use void casts on calls to strcpy and strcat, since the return value is never surprising.
References: K&R2 Sec. A6.7 p. 199
Rationale Sec. 3.3.4
H&S Sec. 6.2.9 p. 172, Sec. 7.13 pp. 229-30
정확한 답변이네요...
댓글 달기