Page 29 -
P. 29

다른 식별자(printf, size_t, EXIT_SUCCESS)에 대한 선언문은 코드에 나오지 않는다. 사실 이 식별
                    자들은 이미 선언된 상태인데, 예제 1-2를 컴파일할 때 본 것처럼 이 식별자에 대한 정보를 컴파
                    일러에게 명시적으로 알려 줘야 한다. 1줄과 2줄에 나온 문장이 바로 이런 정보를 전달하기 위해

                    적은 것이다. printf는 stdio.h에, size_t와 EXIT_SUCCESS는 stdlib.h에 선언되어 있다. 이런 식           2
                    별자를 실제로 선언하는 문장은 컴퓨터 어딘가에 저장된 .h 파일에 담겨 있다. 예를 들면 다음과
                    같다.                                                                               프로그램의 핵심 구조

                      int printf(char const format[static 1], ...);
                      typedef unsigned long size_t;
                      #define EXIT_SUCCESS 0


                    이렇게 미리 선언된 문장이 구체적으로 어떻게 작성됐는지는 그리 중요하지 않기 때문에 일반적
                                                                C
                                           C
                    으로 인클루드 파일(include file)  또는 헤더 파일(header file) 에 숨겨 둔다. 이러한 식별자의 의미를
                    알기 위해 헤더 파일을 읽어보는 것은 좋은 방법이 아니다. 대부분 읽기 어렵게 적혀 있기 때문이
                    다. 그보다는 현재 플랫폼에서 제공하는 문서를 참조하는 것이 낫다. 번거로움을 감수할 수 있다
                    면 최신 C 표준 문서를 참조하는 것이 좋다. 가장 근본이 되는 문서다. 쉬운 방법을 원한다면 다음
                    과 같이 명령을 실행해 보자.


                     터미널
                    0  > apropos printf
                    1  > man printf
                    2  > man 3 printf


                    선언은 대상의 특징을 표현하기만 할 뿐, 실제로 생성하지 않는다. 따라서 같은 선언을 여러 번 적

                    으면 텍스트만 중복될 뿐 문제가 발생하지는 않는다.
                     TAKEAWAY 2.3  식별자의 선언문이 서로 일치한다면 여러 번 나와도 문제는 없다.

                    프로그램의 일정한 영역 안에서 어떤 식별자에 대해 서로 다른 선언문이 여러 개 나오면 (컴파일
                    러나 프로그래머 입장에서) 확실히 헷갈릴 것이다. 그래서 상충하는 선언문이 동시에 나올 수 없

                    다. C 표준에서는 ‘프로그램의 일정한 영역’의 의미를 구체적으로 정의한다. 이처럼 프로그램에서
                                      C
                                                       C
                    식별자가 보이는(visible)  영역을 스코프(scope) 라고 부른다.
                     TAKEAWAY 2.4  식별자는 선언문이 속한 스코프에 바인딩(binding)된다.
                    식별자의 스코프는 문법에 의해 명확히 표현된다. 예제 1-1의 세 선언문에 대한 스코프는 다음과

                    같다.


                                                                                                  33





     모던c.indd   33                                                                           2021-12-29   오후 2:32:58
   24   25   26   27   28   29   30   31   32   33   34