다중 정의 오류 해결: C의 변수 범위 이해
C에서는 변수를 여러 개 정의하면 컴파일 오류가 발생할 수 있습니다. 이 문제를 이해하기 위해 주어진 시나리오를 자세히 살펴보겠습니다.
제공된 4개의 파일(FileA.cpp, FileA.h, FileB.cpp 및 FileB.h)을 살펴보겠습니다. FileB.h에서는 wat라는 전역 변수가 int wat;로 선언됩니다. 그러나 컴파일 중에 컴파일러는 wat의 여러 정의를 감지합니다.
이 오류는 wat 변수가 FileB.h와 FileB.cpp 모두에 정의되어 있기 때문에 발생합니다. 기본적으로 C는 모든 컴파일 단위에서 공유되는 전역 범위에 전역 변수를 배치합니다. 동일한 변수에 대한 정의가 여러 개 존재하는 경우 컴파일러는 어떤 정의를 사용할지 결정할 수 없습니다.
이 문제를 해결하려면 전방 선언 개념을 활용하면 됩니다. 이 기술을 사용하면 정의를 제공하지 않고도 변수의 존재를 선언할 수 있습니다. 이 경우 FileB.h를 다음과 같이 수정합니다.
extern int wat;
FileB.cpp에서 평소와 같이 변수를 정의합니다.
int wat = 0;
extern 키워드를 사용하여 다음과 같이 지시합니다. 프로그램의 다른 곳에 존재하며 해당 정의는 나중에 제공될 컴파일러입니다. 이렇게 하면 wat가 한 번만 선언되고 정의됩니다.
요약하자면, 적절한 범위 지정 메커니즘 없이 변수가 두 번 이상 정의되면 여러 변수 정의가 발생합니다. 전방 선언은 변수의 정의를 특정 소스 파일로 연기하면서 변수의 존재를 나타냄으로써 이 문제를 해결하는 데 도움이 됩니다.
위 내용은 C의 전역 변수로 인해 발생하는 다중 정의 오류를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!