45.8 심사문제 질문합니다.
, 이 정민님이 작성다음과 같이 코드를 작성하여서 리눅스 c에서 돌렸을 시 정상적으로 나오는 것 같은데 테스트에선 통과가 되지 않습니다. 무엇이 잘못되었는지 알 수 있을까요?
if (ptr[0] == 't' && ptr[1] == 'h' && ptr[2] == 'e' && ptr[3] == NULL)
Re: 45.8 심사문제 질문합니다.
, 도장_ 관리자님이 작성gcc나 clang에서 -Wall 옵션으로 컴파일해서 경고가 없는 코드를 작성해야 합니다.
C 언어에서 경고는 에러로 간주합니다. 대부분 버그를 일으키기 때문입니다.
Visual Studio에서는 컴파일 과정에 경고가 표시됩니다.
main.c(13,76): warning C4047: '==': 'int'의 간접 참조 수준이 'void *'과(와) 다릅니다.
clang에서는
main.c:13:63: warning: comparison between pointer and integer ('int' and 'void *') if (ptr[0] == 't' && ptr[1] == 'h' && ptr[2] == 'e' && ptr[3] == NULL) ~~~~~~ ^ ~~~~ 1 warning generated.문제가 되는 부분을 수정해야 합니다.
int와 void*을 비교하기 때문에 문제가 됩니다.