공부/C++

Static과 extern의 개념 및 차이

셩잇님 2022. 12. 29. 20:21
반응형

 

 

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에 정의되어 나머지 프로그램에서 볼 수 있고 액세스할 수 있습니다.

 

 

 

반응형