>

이해하기위한 간단한 질문 :

변수 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 파일에서 전역 변수를 선언해야합니다 :

    // main.c
    int x_glob;
    
    

    이제 모든 모듈에서 사용할 수있는 하나의 변수를 만듭니다. 와이즈 비즈  변수의 버전은 다른 모듈을 컴파일 할 때 컴파일러 에게이 변수가있는 곳을 컴파일러에게 알려주고 모듈을 실행 가능 파일에 링크 할 때 발견됩니다.

    개인적으로 다음 설정을 선호합니다 :

    extern
    
    

    모든 모듈 // 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

  • 이전 powerbi - Power BI는 조건이있는 열을 만듭니다
  • 다음 javascript - HTML 페이지에서 여러 (14) 카운트 다운이 작동하지 않습니다