C++ 전역 변수의 파일 간 사용


머리말

C++ 프로젝트 파일을 작성할 때 데이터 파일 등과 같이 모든 클래스에서 사용하는 일부 데이터가 자주 사용됩니다. 작성 방법 중 하나는 정적 클래스로 작성하는 것이며, 데이터 호출 시 클래스 이름에 속성 이름을 더한 형태를 사용합니다. , 다른 하나는 전역 변수의 형태로 작성하는 것입니다.

C++ 프로젝트의 구성 구조는 xx.h 파일에 함수/클래스 선언을 작성하고 xx.cpp 파일에 함수 정의를 작성하므로 전역 변수의 경우 이러한 전역 변수에 대한 파일 쌍을 만드는 것이 더 적합합니다.


1. 외부 사용

전역 변수는 프로젝트의 여러 파일에서 자주 사용되는데, 예를 들어 ah에 정의된 변수는 b.cpp 및 c.cpp 파일에서 사용해야 합니다.

//a.h
using namespace std;
extern int num_a;
//b.cpp
#include "a.h"
void print(){
    
    
	cout<<num_a<<endl;
}

이때 전역 변수 num_a를 선언할 때 수식자 extern을 추가하지 않으면 파일 간에 호출할 수 없습니다.

2. 쉬운 실수

전역 변수를 사용하기 전에 "먼저 선언하고 정의한 다음 사용"하는 원칙에 주의하십시오. 즉, num_a 변수는 ah에서 선언되며 a.cpp 파일에서 할당/정의되어야 합니다. 정의할 때 extern을 쓸 필요는 없지만 여전히 int를 써야 합니다. (사실 다른 cpp 파일에서도 정의할 수 있지만 같은 이름의 파일에서 디버깅하는 것이 가장 좋습니다.)

//a.cpp
#include "a.h"
int num_a=10;

일반적인 실수
실수 1: cpp에서 정의하지 않고 직접 사용하십시오. 이러한 종류의 오류는 일반적으로 ""xx 변수를 찾을 수 없습니다"로 보고됩니다.
오류 2: ah에서 직접 정의, 즉

using namespace std;
extern int num_a=10;

ah가 포함된 cpp 파일이 하나만 있는 경우에는 에러가 보고되지 않을 수 있으며, 이 헤더 파일이 포함된 cpp 파일이 여러 개일 경우 "변수 정의 중복"이라는 오류가 보고됩니다.
차이점은 변수가 클래스에 정의되어 있을 때 직접 할당이 가능하다는 것입니다. 예를 들어:

using namespace std;
class test{
    
    
private:
	int num_a=10;
public:
	test();
}
```


Supongo que te gusta

Origin blog.csdn.net/weixin_45667108/article/details/126961807
Recomendado
Clasificación