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
   19   20   21   22   23   24   25   26   27   28   29