컴파일러
c++은 컴파일 언어다. 즉, 소스코드를 오브젝트 코드로 변환해야 프로그램을 실행할 수 있다.
소스코드(source code): 사람이 읽고 작성할 수 있는 코드(형태)
실행파일(executable), 목적코드(object code), 기계코드(machine code): 컴퓨터가 실행할 수 있는 코드나 형태
컴파일러는 소스코드를 목적코드로 변환하는 과정을 수행하는 프로그램이다.
링커
//myGoodPlace.cpp
#include <iostream>
#include <string>
int main(){
cout<<"myGoodPlace\n";
return 0;
}
위와 같이 myGoodPlace를 출력하는 프로그램은 #include로 포함한 C++표준 라이브러리와 프로그래머가 작성한 부분으로 이루어진다.
이렇게 나눠진 부분(변환단위: translation unit)인 C++표준 라이브러리, 프로그래머가 작성한 부분 ---(컴파일)---> 목적코드(.obj) ---(링크)---> 실행파일(.exe)
링커는 이렇게 각각 생성된 목적코드들을 서로 연결해주는 프로그램이다.
오류의 종류
오류는 총 3가지로 나눌 수 있다.
컴파일 시간 오류(compile-time errors): 컴파일러가 찾아낸 오류로 3가지의 오류 중 가장 고치기 쉽다.
링크 시간 오류(link-time errors): 링커가 보고한 오류다.
실행 시간 오류(run-time errors) / 논리 오류(logic errors): 문법같은 문제가 아니며, 프로그래머의 의도와 다르게 실행되는 문제다. 그렇기 때문에 프로그램이 실제로 실행되기 전에는 찾을 수 없는 오류다.