C에서 변수의 다중 정의
C에서 변수를 여러 번 정의하면 컴파일 오류가 발생할 수 있습니다. 이 문제는 여러 파일에 헤더 파일이 포함되어 동일한 변수에 대한 여러 정의가 발생하는 경우 발생할 수 있습니다.
다음 시나리오를 고려하세요.
// FileA.cpp #include "FileA.h" int main() { hello(); return 0; }
// FileA.h #ifndef FILEA_H_ #define FILEA_H_ void hello(); #endif
// FileB.cpp #include "FileB.h"
// FileB.h #ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif
이 코드를 컴파일할 때 FileA.h와 FileB.h가 모두 변수를 정의하기 때문에 "wat의 다중 정의" 오류가 발생할 수 있습니다. wat`.
해결책:
이 문제를 해결하려면 extern 키워드를 사용할 수 있습니다. 이 키워드는 변수가 프로그램의 다른 곳에 존재하는 것으로 선언하고 해당 변수가 여러 번 정의되는 것을 방지합니다.
// FileB.h extern int wat;
// FileB.cpp int wat = 0;
FileB.h에서 wat를 extern으로 선언함으로써 우리는 본질적으로 컴파일러에게 Wat의 정의가 다른 파일(이 경우 FileB.cpp)에 존재합니다. 이렇게 하면 변수에 대한 여러 정의가 발생하지 않고 오류 없이 컴파일이 진행될 수 있습니다.
위 내용은 헤더 파일을 여러 개 포함하면 C에서 '다중 정의' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!