인프런 커뮤니티 질문&답변

Man Do님의 프로필 이미지
Man Do

작성한 질문수

홍정모의 따라하며 배우는 C언어

3.4 간단한 입출력 프로그램 만들기

scanf warning

작성

·

323

1

디버깅을 할 때마다 밑에

Code:C6031 Return value ignored

라는 warning이 뜹니다... 어떻게 해야하나요?

답변 4

6

홍정모님의 프로필 이미지
홍정모
지식공유자

안녕하세요? 뒤에 설명이 나올텐데, C언어는 프로그램이 매우 엄격해야 하는 경우에도 많이 사용되는 언어라서 최근에 점점 컴파일러도 엄격해지는 경향을 보이고 있습니다. 예를 들어서 우주선 같은 하드웨어를 제어하는 프로그램을 작성한다면 하드웨어에 문제가 있는 경우에는 즉시 문제가 있다는 것을 보고하고 종료해야겠죠. 그래서 scanf도 반환값을 받아서 문제가 있는지 확인하는 코드를 꼭 작성하도록 유도하기 위해서 경고가 뜨는 것입니다. flag로 받아서 확인하는 예제는 뒤에 나옵니다만, 표준 입출력같이 간단한 경우에는 워닝을 꺼버리는 방법도 있습니다. 워닝 끄는 방법도 뒤에 나옵니다만 검색하셔도 쉽게 찾으실 수 있을겁니다.

* 위의 김진범님 답변에 '쓸데 없는 메모리 사용'이라는 얘기가 나오는 이유는 반환값을 받은 후에 문제가 있는지 검사를 하는데에 쓰지 않아서 그렇습니다. 원래는 입력이 잘 들어왔는지 매번 확인해주는 것이 원칙입니다.

0

검색으로 인한 단편적인 지식이었는데 더 깊게 알고가게되네요! 감사합니다 교수님 :)

0

Man Do님의 프로필 이미지
Man Do
질문자

도움 주셔서 감사합니다^^

0

제가 답할 수 있는 입장이 되는지 모르겠다만 저도 불편해서 찾아보니까 C6031같은경우 scanf의 반환값을 대입하거나 사용하지 않아서 오류가 뜬다고 하더라구요. 실행하고 사용하는데 문제가 없으면 무시해도 된다고 하나 없애고 싶으면 scanf 함수로 입력받는 코드 자체를 또 하나의 변수를 사용하여 대입하면 사라지긴하나 쓸데없는 메모리 사용이라고 합니다. 도움되셨으면 좋겠습니다. 근데 아마 조교분이나 교수님이 더 정확한 답변을 해주실 수 있을 것 같습니다ㅠ

Man Do님의 프로필 이미지
Man Do

작성한 질문수

질문하기