C에서의 공유 글로벌 변수
C에서 공유되는 글로벌 변수를 작성하려면 어떻게 해야 하나요?헤더 파일에 넣으면 링커는 변수가 이미 정의되어 있다고 불평합니다.C 파일 중 하나에 변수를 선언하고 수동으로 입력하는 유일한 방법입니다.extern
이 파일을 사용하는 다른 모든 C 파일 중 맨 위에 있는 파일입니까?이상적이지 않은 것 같네요.
헤더 파일에 다음과 같이 적습니다.extern
c 파일 중 하나의 글로벌 범위에서는 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
'IT이야기' 카테고리의 다른 글
컨테이너가 카드 안에 있을 때 데이터 테이블을 전체 너비로 확대하려면 어떻게 해야 합니까? (0) | 2022.06.09 |
---|---|
vuex 저장소를 입력하는 일반 유형 (0) | 2022.06.09 |
열린 상태에서 카메라 캡처 해상도 향상이력서 (0) | 2022.06.09 |
Vuex/Vuejs: vuex 스토어 내의 local Storage에 액세스 (0) | 2022.06.09 |
VueJS에서 Vuex 저장소를 모의하는 방법 parentComponent 테스트 유틸리티 (0) | 2022.06.09 |