홈>
이해하기위한 간단한 질문 :
변수 pyzwyz 헤더extern int x_glob
에 선언
.
glob.h
에 선언 된 함수를 포함하는 모든 c 파일에서
이 변수를 사용하여 다음과 같이 agin을 정의해야합니다.
glob.h
정확합니까?
내가extern void func_1( void )
{
int x_glob;
glob_x++;
return();
}
의 선언에 extern 단어를 떠나면
와이즈 비즈
정의가 필요하지 않습니다.
왜
x_glob
를 떠나지 않는가
헤더 파일의 단어?
이 질문은 어리석게 들릴 것입니다-제 목표는 더 나은 구조를 얻는 것입니다 프로젝트가 성장함에 따라 내 프로그래밍.
glob.h
- 답변 # 1
아니요, 잘못되었습니다.
int x_glob
와 함께 함수 내에서 로컬 자동 변수를 선언합니다. 전역 변수보다 우선합니다.하지만 정확히 하나의 .c 파일에서 전역 변수를 선언해야합니다 :
이제 모든 모듈에서 사용할 수있는 하나의 변수를 만듭니다. 와이즈 비즈 변수의 버전은 다른 모듈을 컴파일 할 때 컴파일러 에게이 변수가있는 곳을 컴파일러에게 알려주고 모듈을 실행 가능 파일에 링크 할 때 발견됩니다.
개인적으로 다음 설정을 선호합니다 :
모든 모듈
// glob.h #ifndef EXTERN #define EXTERN extern #endif EXTERN int x_glob; // module.c #include "glob.h" // main.c #define EXTERN #include "glob.h"
x_glob
로 알려진 기본적으로 extern이 아니므로 전역 변수의 스토리지를 선언합니다.extern