IT이야기

C에서의 공유 글로벌 변수

cyworld 2022. 6. 9. 22:11
반응형

C에서의 공유 글로벌 변수

C에서 공유되는 글로벌 변수를 작성하려면 어떻게 해야 하나요?헤더 파일에 넣으면 링커는 변수가 이미 정의되어 있다고 불평합니다.C 파일 중 하나에 변수를 선언하고 수동으로 입력하는 유일한 방법입니다.extern이 파일을 사용하는 다른 모든 C 파일 중 맨 위에 있는 파일입니까?이상적이지 않은 것 같네요.

헤더 파일에 다음과 같이 적습니다.externc 파일 중 하나의 글로벌 범위에서는 c 파일 없이 선언합니다.extern.

1개의 헤더 파일(공유).h) :

extern int this_is_global;

이 글로벌 기호를 사용하는 모든 파일에 extern 선언을 포함하는 헤더를 포함합니다.

#include "shared.h"

여러 링커의 정의를 피하기 위해 컴파일 유닛 전체에 글로벌기호의 선언을 1개만 표시해야 합니다(예: shared.cpp).

/* shared.cpp */
#include "shared.h"
int this_is_global;

C와 C++ 사이에 코드를 공유하는 경우는, 다음의 항목을 반드시 추가해 주세요.shared.h파일:

#ifdef __cplusplus
extern "C" {
#endif

extern int my_global;
/* other extern declarations ... */

#ifdef __cplusplus
}
#endif

선언을 헤더 파일에 넣습니다.

 extern int my_global;

.c 파일 중 하나에서 글로벌 범위에서 정의합니다.

int my_global;

액세스 할 필요가 있는 모든 .c 파일my_global에는 헤더 파일이 포함되어 있습니다.extern인스톨.

헤더 파일

헤더 파일

#ifndef SHAREFILE_INCLUDED
#define SHAREFILE_INCLUDED
#ifdef  MAIN_FILE
int global;
#else
extern int global;
#endif
#endif

글로벌하게 존속시키는 파일이 있는 파일:

#define MAIN_FILE
#include "share.h"

외부 버전이 필요한 다른 파일:

#include "share.h"

헤더 파일을 1개만 사용하여 보다 깔끔하게 관리할 수 있는 방법이 있습니다.각 선언에 키워드(공통 사용)를 부가하는 글로벌 변수가 포함된 헤더에는 다음과 같은 키워드가 포함되어 있습니다.

#define common
#include "globals.h"
#undef common

기타 모든 소스 파일도 마찬가지입니다.

#define common extern
#include "globals.h"
#undef common

globals.h 파일 내의 변수를 초기화하지 마십시오.그렇지 않으면 extern 키워드를 사용해도 초기화된 변수가 외부로 처리되지 않기 때문에 링커는 계속 불만을 제기합니다.global.h 파일은 다음과 같습니다.

#pragma once
common int globala;
common int globalb;
etc.

어떤 종류의 선언에도 효과가 있는 것 같습니다.#define에서 공통 키워드를 사용하지 마십시오.

언급URL : https://stackoverflow.com/questions/3010647/shared-global-variables-in-c

반응형