- 분할컴파일
말그대로 프로그램을 파일로 나누어 컴파일한다는 뜻
수정부분의 파일만 수정 후 컴파일하면 되기 때문에 큰 규모의 프로그램을 보다 쉽게 관리 할 수 있다
- #ifndef & #endif
ifndef는 if not defined 라는 의미로 어떠한 매크로 문구가 define되어 있으면
ifndef 과 endif사이의 코드를 실행한다는 의미다
정말 쉽게보면 if문에 bool형 조건을 단것과 같다
헤더파일을 여러번 포함시키는 실수를 피하기 위하여 사용하는 기법이다
- Linkage
Linkage : 연결
연결 : 사물과 사물을 서로 잇다
개념 : 변수의 속성중 하나로 파일과의 연결을 뜻하는 속성이다
이 사물과 사물을 프로그래밍 적으로 보면 파일과 변수라고 생각을 한다
이 속성은 세가지 항목으로 이루어져있다
[ 외부링크, 내부링크, 링크없음 ]
외부링크 - 말 그대로 현재 속한 파일뿐만 아니라 다른 외부 파일에서도 참조 할 수 있다 라는 속성
내부링크 - 현재 속한 파일에서만 참조 할 수 있다 라는 속성
링크없음 - 제한된 영역(ex. 스코프)에서만 참조 할 수 있다 라는 속성
외부링크된 변수를 다른 파일에서 사용 할 때 필요한게 extern 이다
- extern
extern 외부의, 바깥의
개념 : 다른 파일의 전역변수를 참조 한다는 참조선언이다
extern을 사용해 위에 있었던 Include.cpp파일의 전역변수 A를 사용했다
참고로 static을 사용한 정적변수B는 내부링크 속성을 가지고 있으므로 extern을 선언해도 사용 할 수 없다
- Static
static : (변화움직임이 없이) 고정된[고정적인]
개념 : 두가지 의미가 있다
밖에서 사용 할 경우 - 변수에 내부링크 속성을 사용한다라는 뜻
스코프 안에서 사용 할 경우 - 변수가 정적 기억 존속 시간을 가진다는 뜻
(프로그램이 끝날 때 까지 존속)
(함수내부가 아닌)밖에서 Static을 사용한 변수를 정적변수 라 한다
(함수내부가 아닌)밖에서 Static을 사용하지 않은 변수를 전역변수(global) 라 한다
이제 밖이 아닌 스코프 안에 사용했을 경우에는 정적지역변수 라고도 하는데
변수는 프로그램이 끝날때까지 남아있으면서 사용된 그 스코프에서만 사용이 가능한데
언뜻보면 정말 쓸모없다고 생각이 들었는데 정적지역변수의 특성이 있었다
정적지역변수는 선언 부분이 계속 나와도 이미 선언이 되어있으면
초기화 하지 않고 이미 선언된 변수를 사용 할 수 있다
이렇게 값이 계속 유지 되는걸 볼 수있다.
이는 한마디로 함수가 언제 호출 되든 값이 유지되는 변수다
정적지역변수는 함수가 다르면 식별자가 같아도 다른 변수로 인식된다
정적지역변수는 정말 신기했다ㅋㅋ
'C++ > [책] C++ 기초 플러스' 카테고리의 다른 글
[ 596p ~615p ] 위치지정new, 선언영역 & 잠재 사용 범위, 이름공간, using선언 & using지시 (0) | 2021.08.18 |
---|---|
[ 590p ~ 595p ] thread_local, volatile, mutable, const의 내부링크, 함수와 링크, 단일 정의 규칙 (0) | 2021.08.18 |
※[ 535p ~ 558p ] 오버로딩분석, decltype, 후위반환타입 (0) | 2021.08.12 |
[ 517p ~ 534p ] 함수 템플릿, 템플릿 오버로딩, 구체화, 명시적 특수화 (0) | 2021.08.11 |
[ 486p ~ 517p ] 배열참조형, 디폴트 매개변수, 오버로딩, Name mangling (0) | 2021.07.29 |