더북(TheBook)

이렇게 진단 출력(diagnostic output)C이 길수록 많은 정보가 담긴 것이므로 오히려 도움이 된다. 특히 여기서는 두 가지 힌트를 제공한다. 하나는 main의 리턴 타입이 이상하다는 것이고, 다른 하나는 예제 1-1의 3줄처럼 printf 함수가 어디서 나온 것인지 지정하는 문장이 없다는 것이다. gcc와 달리 clang은 실행 파일을 생성하지 않는다. 22줄의 문제가 심각하다고 판단하기 때문이다. 이는 clang의 특징이라 할 수 있다.

여러분이 사용하는 플랫폼에 따라 이런 진단 정보가 나오는 프로그램에 대해 무조건 컴파일을 중단하도록 지정할 수 있다. gcc에서는 -Werror 옵션을 지정하면 된다.

이처럼 예제 1-1과 예제 1-2는 두 가지 부분이 다른데, 그 때문에 표준을 준수하고 이식성도 있던 프로그램이 문제 있는 프로그램으로 변했다. 또한 컴파일러가 문제 해결에 도움을 준다는 사실도 알 수 있다. 문제를 일으키는 부분을 줄 단위로 지적해 주는데, 경험이 어느 정도 있다면 그 의미를 제대로 파악할 수 있다.Exs3, Exs4

TAKEAWAY 1.4 C 프로그램을 컴파일했을 때 경고 메시지가 하나도 없어야 한다.

 

 


Exs 3 예제 1-2를 하나씩 고쳐 본다. 첫 번째 진단 메시지부터 하나씩 해결해서 다시 컴파일하는 식으로 프로그램의 문제를 모두 해결한다.

 

 


Exs 4 예제 1-1과 예제1-2의 차이점 중 여기서 소개하지 않은 것이 하나 더 있는데, 이 차이점이 무엇인지 찾아본다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.