Page 24 -
P. 24
11 return 0;
12 ^ ~
13 2 warnings and 1 error generated.
C
이렇게 진단 출력(diagnostic output) 이 길수록 많은 정보가 담긴 것이므로 오히려 도움이 된다. 특
히 여기서는 두 가지 힌트를 제공한다. 하나는 main의 리턴 타입이 이상하다는 것이고, 다른 하나
는 예제 1-1의 3줄처럼 printf 함수가 어디서 나온 것인지 지정하는 문장이 없다는 것이다. gcc와
달리 clang은 실행 파일을 생성하지 않는다. 22줄의 문제가 심각하다고 판단하기 때문이다. 이는
clang의 특징이라 할 수 있다.
여러분이 사용하는 플랫폼에 따라 이런 진단 정보가 나오는 프로그램에 대해 무조건 컴파일을 중
단하도록 지정할 수 있다. gcc에서는 -Werror 옵션을 지정하면 된다.
이처럼 예제 1-1과 예제 1-2는 두 가지 부분이 다른데, 그 때문에 표준을 준수하고 이식성도 있던
프로그램이 문제 있는 프로그램으로 변했다. 또한 컴파일러가 문제 해결에 도움을 준다는 사실도
알 수 있다. 문제를 일으키는 부분을 줄 단위로 지적해 주는데, 경험이 어느 정도 있다면 그 의미
를 제대로 파악할 수 있다. Exs 3, Exs 4
TAKEAWAY 1.4 C 프로그램을 컴파일했을 때 경고 메시지가 하나도 없어야 한다.
1.3 요약
● C는 컴퓨터가 할 일을 명령하도록 설계된 언어다. 따라서 프로그래머와 컴퓨터를 연결해
준다.
● C 코드를 실행하려면 반드시 컴파일해야 한다. 컴파일러는 사람이 이해할 수 있도록 C 언
어로 작성된 텍스트를 특정 플랫폼에서 실행할 수 있는 형태로 번역해 준다.
● C는 이식성을 위해 추상화를 제공한다. 한 번 작성한 C 프로그램을 다양한 아키텍처의 컴
퓨터에서 사용할 수 있다.
● C 컴파일러는 프로그래머를 도와주는 존재다. 컴파일러가 출력한 경고 메시지를 주의 깊게
살펴본다.
Exs 3 예제 1-2를 하나씩 고쳐 본다. 첫 번째 진단 메시지부터 하나씩 해결해서 다시 컴파일하는 식으로 프로그램의 문제를 모두 해결한다.
Exs 4 예제 1-1과 예제1-2의 차이점 중 여기서 소개하지 않은 것이 하나 더 있는데, 이 차이점이 무엇인지 찾아본다.
28
모던c.indd 28 2021-12-29 오후 2:32:57