• 분할컴파일

말그대로 프로그램을 파일로 나누어 컴파일한다는 뜻

 

수정부분의 파일만 수정 후 컴파일하면 되기 때문에 큰 규모의 프로그램을 보다 쉽게 관리 할 수 있다

 


  • #ifndef & #endif

ifndef는 if not defined 라는 의미로 어떠한 매크로 문구가 define되어 있으면

ifndef 과 endif사이의 코드를 실행한다는 의미다

 

정말 쉽게보면 if문에 bool형 조건을 단것과 같다

헤더파일을 여러번 포함시키는 실수를 피하기 위하여 사용하는 기법이다

 


  • Linkage
Linkage  : 연결
연결  :  사물과 사물을 서로 잇다

개념 : 변수의 속성중 하나로 파일과의 연결을 뜻하는 속성이다

이 사물과 사물을 프로그래밍 적으로 보면 파일과 변수라고 생각을 한다

 

이 속성은 세가지 항목으로 이루어져있다

[ 외부링크, 내부링크, 링크없음 ]

 

외부링크 - 말 그대로 현재 속한 파일뿐만 아니라 다른 외부 파일에서도 참조 할 수 있다 라는 속성

 

내부링크 - 현재 속한 파일에서만 참조 할 수 있다 라는 속성

 

링크없음 - 제한된 영역(ex. 스코프)에서만 참조 할 수 있다 라는 속성

 

★★★ Include.cpp 파일 이다, 밑에 코드와 이어짐

 

외부링크된 변수를 다른 파일에서 사용 할 때 필요한게 extern 이다

 

  • extern
extern 외부의, 바깥의

개념 : 다른 파일의 전역변수를 참조 한다는 참조선언이다

 

★★★ main.cpp 파일이다

extern을 사용해 위에 있었던 Include.cpp파일의 전역변수 A를 사용했다

 

참고로 static을 사용한 정적변수B는 내부링크 속성을 가지고 있으므로 extern을 선언해도 사용 할 수 없다

실행전에는 당연히 문제는 없다
하지만 실행결과

 


 

  • Static
static : (변화움직임이 없이) 고정된[고정적인]

 

개념 : 두가지 의미가 있다

 

밖에서 사용 할 경우 - 변수에 내부링크 속성을 사용한다라는 뜻

스코프 안에서 사용 할 경우 - 변수가 정적 기억 존속 시간을 가진다는 뜻

                                           (프로그램이 끝날 때 까지 존속)

 

(함수내부가 아닌)밖에서 Static을 사용한 변수를 정적변수 라 한다

(함수내부가 아닌)밖에서 Static을 사용하지 않은 변수를 전역변수(global) 라 한다

 

이제 밖이 아닌 스코프 안에 사용했을 경우에는 정적지역변수 라고도 하는데

변수는 프로그램이 끝날때까지 남아있으면서 사용된 그 스코프에서만 사용이 가능한데

 

언뜻보면 정말 쓸모없다고 생각이 들었는데 정적지역변수의 특성이 있었다

 

정적지역변수는 선언 부분이 계속 나와도 이미 선언이 되어있으면

초기화 하지 않고 이미 선언된 변수를 사용 할 수 있다

 

Include.cpp
main.cpp

이렇게 값이 계속 유지 되는걸 볼 수있다.

이는 한마디로 함수가 언제 호출 되든 값이 유지되는 변수다

 

정적지역변수는 함수가 다르면 식별자가 같아도 다른 변수로 인식된다

include.cpp
(좌) Test 함수의 정적지역변수A, (우) Test1 함수의 정적지역변수A

정적지역변수는 정말 신기했다ㅋㅋ

+ Recent posts