C언어 및 C++ 언어에서 static 및 extern 키워드는 변수와 함수의 가시성과 종료 시점을 수정하는 데 사용됩니다.
일반적으로 static 변수와 함수는 사용할 수 있는 범위가 제한되어 있습니다. 즉, 정의된 파일 내에서만 해당 변수와 함수를 볼 수 있고 액세스할 수 있습니다.static 변수는 프로그램의 데이터 세그먼트에도 저장되며 프로그램이 시작될 때 0으로 초기화됩니다. static 함수 또한 데이터 세그먼트에 저장되며 다른 파일에는 표시되지 않습니다.
반면에 extern 변수와 함수는 전역 범위를 갖습니다. 즉, 프로그램의 모든 파일에서 볼 수 있고 액세스할 수 있습니다. extern 변수는 데이터 세그먼트에 저장되며 static 변수와 마찬가지로 프로그램이 시작될 때 0으로 초기화됩니다. extern 함수는 텍스트 세그먼트에 저장되며 다른 파일에서 볼 수 있습니다.
다음은 C언어에서 static 및 extern의 예제입니다.
// file1.c
// Define a static variable and function
static int count = 0;
static void increment_count() {
count++;
}
// Define an extern variable and function
extern int global_count;
extern void increment_global_count();
int main() {
// Access the static variable and function
count++;
increment_count();
// Access the extern variable and function
global_count++;
increment_global_count();
return 0;
}
// file2.c
// Declare an extern variable and function
extern int global_count;
extern void increment_global_count();
// Define the extern function
void increment_global_count() {
global_count++;
}
// Define the extern variable
int global_count = 0;
이 예에서 count 변수와 increment_count 함수는 file1.c에서 정적으로 정의되어 있으므로 해당 파일 내에서만 보고 액세스할 수 있습니다. global_count 변수와 increment_global_count 함수는 file1.c에서 extern으로 정의되어 있으므로 프로그램의 모든 파일에서 액세스할 수 있습니다. global_count 변수와 increment_global_count 함수는 file2.c에 정의되어 나머지 프로그램에서 볼 수 있고 액세스할 수 있습니다.
'공부 > C++' 카테고리의 다른 글
static_cast와 dynamic_cast의 개념 및 차이점 (0) | 2023.01.10 |
---|---|
스마트 포인터와 스마트 포인터의 종류 (0) | 2023.01.06 |
Dynamic_cast 내부동작은 어떻게 되는가? (0) | 2022.12.23 |
가상 함수(Virtual Function)와 가상 함수 테이블(Virtual Function Table) 개념 및 차이 (0) | 2022.12.22 |
Vector resize, reserve의 차이점 (0) | 2022.12.21 |