프로그래밍 언어/C++

C ++에서 extern을 사용하는 경우

Rateye 2021. 6. 4. 10:32
728x90
반응형
질문 : C ++에서 extern을 사용하는 경우

"Think in C ++"를 읽고 있는데 방금 extern 선언을 소개했습니다. 예를 들면 :

extern int x; extern float y; 

나는 의미 (정의없는 선언)를 이해한다고 생각하지만 그것이 언제 유용하다고 증명되는지 궁금합니다.

누군가 예를 들어 줄 수 있습니까?

답변

이것은 전역 변수가있을 때 유용합니다. 헤더에 전역 변수의 존재 를 선언하여 헤더를 포함하는 각 소스 파일이 이에 대해 알지만 소스 파일 중 하나에서 한 번만 "정의"하면됩니다.

명확히하기 위해 extern int x; x int 유형의 객체가 어딘가에 존재 함을 컴파일러에 알립니다. 그것이 존재하는 위치를 아는 것은 컴파일러의 일이 아닙니다. 단지 타입과 이름 만 알고 있어야 사용 방법을 알 수 있습니다. 모든 소스 파일이 컴파일되면 링커는 x 모든 참조를 컴파일 된 소스 파일 중 하나에서 찾은 하나의 정의로 확인합니다. x 변수의 정의에 "외부 연결"이라는 것이 있어야합니다. 이는 기본적으로 함수 외부 (일반적으로 "파일 범위"라고 함)에서 static 키워드없이 선언되어야 함을 의미합니다. .

#ifndef HEADER_H #define HEADER_H  // any source file that includes this will be able to use "global_x" extern int global_x;  void print_global_x();  #endif 
#include "header.h"  // since global_x still needs to be defined somewhere, // we define it (for example) in this source file int global_x;  int main() {     //set global_x here:     global_x = 5;      print_global_x(); } 
#include <iostream> #include "header.h"  void print_global_x() {     //print global_x here:     std::cout << global_x << std::endl; } 
출처 : https://stackoverflow.com/questions/10422034/when-to-use-extern-in-c
728x90
반응형