헤더 파일은 compile 되지 않는다.
- 헤더 파일은 include 한 cpp 파일 내에 전체 복사 될 뿐이다.
cpp 파일들은 각각 독립적으로 컴파일 된다.
그 다음에 컴파일이 완료된 cpp 파일들을 Linking 한다!
헤더 가드
헤더 파일에는 함수의 proto-type 만 쓴다.
헤더와 이름이 같은 cpp 파일에는 함수의 정의와 바디를 쓴다.
include 한 cpp 파일에서 이 함수들을 사용한다.
헤더 가드를 사용하는 이유는?
헤더 재 정의를 방지하기 위함이다.
가끔 헤더 파일 안에서 함수 바디까지 다 정의 하는 경우가 있기 때문에 이를 방지해야 한다.
이렇게 바디까지 다 정의 했는데 가드가 없다면 복사가 2번 이상씩 되 버리니까 함수 재정의가 된다.
#ifndef ADD
#define ADD
int add(int a, int b) {
return a + b;
}
#endif
이미 이전에 include 된 파일이라면 ADD 가 정의되어 있을 테니 재정의 하지 않을 것이다.
#pragma once
한 줄이면 간단하게 파일 전체의 재정의를 막을 수 있다.
하지만.. 공식 언어는 아니기 때문에 지원하지 않는 컴파일러라면 위의 경우를 사용하자.