c 언어에서static와extern의 용법에 대한 상세한 해석

1293 단어
1,static와extern: 큰 프로젝트에서 우리는 많은 원본 문서를 만날 수 있습니다.문서 a.c
 
  
static int i; // a
int j;    //
static void init()         // a
{
}
void callme()          //
{
   static int sum;
}

위의 전역 i 변수와 init () 함수는 a.c 문서에서만 사용할 수 있고 전역 변수sum의 역할역은callme에서만 사용할 수 있습니다.변수 j와 함수callme()의 한계를 전체 프로젝트 문서로 확장합니다.그래서 아래 b.c에서 extern 키워드로 호출할 수 있습니다.extern은 컴파일러에게 이 변수나 함수가 다른 문서에서 정의되었음을 알려 줍니다.
문서
 
  
extern int j;     // a
extern void callme();  // a
int main()
{
  ...
}

extern의 또 다른 사용법은 C와 C++가 혼합 프로그래밍을 할 때 c++가 c원 문서에서 정의한 함수나 변수를 호출한다면 extern을 추가해서 컴파일러가 c방식으로 함수를 명명하는 것을 알려줍니다.
문서 A.cpp 호출 a.c의 변수 i와 함수callme()
 
  
extern "C"  // c++ c
{
   int j;
   void callme();
}
int main()
{
   callme();
}

둘째, static법칙: A. 만약에 전역 변수가 한 개의 C 문서에서만 방문한다면 이 변수를 정적 전역 변수로 수정하여 모듈 간의 결합도를 낮출 수 있다.
B. 만약에 전역 변수가 단일 함수로만 접근한다면 이 변수를 이 함수의 정적 국부 변수로 바꾸어 모듈 간의 결합도를 낮출 수 있다.
C. 동적 전역 변수, 정적 전역 변수, 정적 국부 변수에 접근하는 함수를 설계하고 사용할 때 리셋 문제를 고려해야 한다.

좋은 웹페이지 즐겨찾기