c 언어에서static와extern의 용법에 대한 상세한 해석
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. 동적 전역 변수, 정적 전역 변수, 정적 국부 변수에 접근하는 함수를 설계하고 사용할 때 리셋 문제를 고려해야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.