📚소스 프로그램 작성

C++로 작성한 프로그램을 담고 있는 파일을 소스 파일이라고 한다. 소스 파일에는 C++ 소스 프로그램 파일(.cpp, .cxx)과 C++ 헤더 파일(.h)이 있다.

  • 소스 프로그램 파일: 프로그램 명령어들을 포함하는 프로그램이 작성된 파일이다.

  • 헤더 파일: 여러 소스 프로그램 파일에 공통적으로 들어가야하는 부분을 별도로 작성한 파일이다. 전역변수, 함수 원형, 클래스 등이 여기에 해당된다. 헤더 파일은 단독으로 컴파일 되지 않고 #include라는 선행처리기 지시어에 의해 소스 프로그램에 삽입되어 같이 컴파일 된다.
    직접 작성하지 않은 라이브러리를 사용하기 위해 선언해야 할 것들도 C++ 컴파일러에서 헤더 파일로 제공하고 있다.


📄선언과 정의

  • 선언: 컴파일러에게 프로그램 중에 사용할 이름과 그 형식을 알리는 것을 의미한다.

  • 정의: 선언이 그 이름에 대한 실체가 만들어지게 하는 경우를 의미한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int i; // 선언과 동시에 변수를 위한 저장공간 할당
       // 변수 i를 정의하는 문장
       // 따라서 이 문장은 정의인 선언

extern int j; // j라는 이름이 int형 변수라는 것을 
              // 컴파일러가 알 수 있게 하는 선언문

int k(int a); // 함수 k의 원형 선언문

int f(int x, int y)
{
    return k(x) * y;
}

// 10 ~ 13행은 함수 f를 정의하는 문장
// 실제 명령어 코드가 메모리 영역에 존재

하나의 번역 단위에서 하나의 이름에 대한 선언은 정의가 아니면 여러 번 반복될 수 있다. 다만 선언되는 내용은 동일해야 한다. 하지만 정의는 단 한번만 할 수 있다.

1
2
3
4
5
extern int j;
extern int j; // j의 재선언

int j;
int j; // 컴파일 에러: j의 중복 정의



📚프로그램 빌드

  1. 컴파일러가 소스 파일을 컴퓨터가 이해할 수 잇는 명령으로 번역하는 컴파일이라는 과정을 거친다.
  2. 컴파일러가 하나의 번역 단위를 컴파일한 결과로 목적 코드가 만들어지는데 목적 코드를 저장하는 파일을 목적 파일이라고 한다. 목적 파일은 번역 단위별로 하나씩 만들어지고 확장자는 ‘.obj’이다.
  3. 목적 파일들이 생성되면 이것들을 연결하여 실행 파일을 만든다. 이때 라이브러리와 함께 연결하여 실행 파일을 생성한다. 목적 파일과 라이브러리를 연결해서 실행 파일을 만드는 것을 링크라고 한다. 링크 작업을 하는 도구를 링커라고 한다.

실행 파일이 만들어지기 위해서는 컴파일과 링크가 모두 이루어져야 한다. 컴파일과 링크를 통해 실행 파일을 만드는 과정을 프로젝트를 빌드한다고 한다.

💡라이브러리: 프로그램을 작성할 때 사용할 수 있는 클래스나 값, 함수 등을 모아 놓은 것을 의미한다.



📚통합개발환경

  • 텍스트 에디터: 소스 프로그램 작성하기 위한 도구. 예약어, 상수 등을 강조해서 표시하는 기능, 괄호 짝을 알려주는 기능 등 C++ 프로그램을 작성하는데 도움이 되는 기능 포함.

  • 컴파일러, 링커: 소스 프로그램을 컴파일하고 링크하기 위한 도구. 프로그램의 오류 발견 및 수정하는 디버깅하는 기능 포함.

  • 통합개발환경(IDE): 소프트웨어 개발에 사용되는 여러 가지 도구들을 모아 놓은 것이다.



Leave a comment