Page 21 -
P. 21

실행할 컴퓨터마다 다르다는 것이다. PC는 전화기보다 용도가 다양하다. 냉장고와 셋톱박스는 사
                    용하는 ‘언어’가 서로 다르다. C 언어도 마찬가지로 이런 문제가 존재한다. C는 다양한 기계어(어
                                C
                    셈블리(assembly) )를 추상화한 것이다.                                                        1
                     TAKEAWAY 1.3  제대로 작성된 C 프로그램은 여러 플랫폼에 이식할 수 있다.                                  들어가며

                    필자는 이 책에서 C 프로그램의 이식성(portability)을 보장하도록 ‘올바르게’ 작성하려고 최선을 다
                    했다. 아쉽게도 C를 지원한다고 내세우지만 최신 표준과 맞지 않은 플랫폼도 존재한다. 게다가 제
                    대로 작성하지 않은 부분을 그냥 넘기거나, 이식성이 떨어진 확장 기능을 사용하는 플랫폼도 있

                    다. 이렇듯 한 플랫폼에서 실행하고 테스트하는 것만으로는 이식성을 보장할 수 없다.
                    컴파일러는 앞에서 본 조그만 프로그램을 여러분이 사용하는 PC, 전화기, 셋톱박스, 냉장고 등을

                    비롯한 특정 플랫폼에 맞게 번역했을 때 제대로 실행될지를 검사한다.
                    (리눅스나 맥 OS 같은) POSIX 시스템이라면 대부분 c99라는 C 컴파일러가 제공된다. 앞에서 본

                    예제 프로그램을 컴파일하려면 다음과 같이 명령을 실행하면 된다.

                     터미널
                    0  > c99 -o getting-started getting-started.c -lm



                    그러면 아무 문제 없이 컴파일되어 getting-started란 이름의 실행 파일이 현재 디렉터리에 생성
                    된다. Exs 1  이 명령의 구성 요소를 하나씩 살펴보면 다음과 같다.


                       ●   c99: 컴파일러 프로그램
                                                                                           C
                       ●    -o  getting-started: 컴파일러에서 처리한 결과(컴파일러  출력(compiler  output) )를
                         getting-started라는 파일에 저장한다.
                                                        C
                       ●    getting-started.c: 소스 파일(source file) , 즉 작성한 C 코드가 담긴 파일의 이름을 지정한
                         다. 파일 이름 끝에 붙은 .c라는 확장자는 이 파일이 C 프로그래밍 언어로 작성된 것임을 나
                         타낸다.

                       ●   -lm: 필요하다면 표준 수학 함수를 추가한다. 뒤에서 이런 함수를 사용할 것이다.
                                                 C
                    이제 새로 생성된 실행 파일(executable) 을 실행한다. 방법은 다음과 같다.







                    Exs 1  각자 터미널에서 컴파일해 보기 바란다.

                                                                                                  25





     모던c.indd   25                                                                           2021-12-29   오후 2:32:57
   16   17   18   19   20   21   22   23   24   25   26