> 백엔드 개발 > C++ > C의 전역 변수로 인해 발생하는 다중 정의 오류를 어떻게 해결할 수 있습니까?

C의 전역 변수로 인해 발생하는 다중 정의 오류를 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-04 07:09:11
원래의
973명이 탐색했습니다.

How Can I Resolve Multiple Definition Errors Caused by Global Variables in C  ?

다중 정의 오류 해결: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿