>  기사  >  백엔드 개발  >  C++ 컴파일 오류: 컴파일러는 다양한 유형의 다중 정의를 지원하지 않습니다. 어떻게 해결합니까?

C++ 컴파일 오류: 컴파일러는 다양한 유형의 다중 정의를 지원하지 않습니다. 어떻게 해결합니까?

王林
王林원래의
2023-08-22 11:03:321634검색

C++ 컴파일 오류: 컴파일러는 다양한 유형의 다중 정의를 지원하지 않습니다. 어떻게 해결합니까?

C++로 프로그램을 작성할 때 컴파일 오류가 발생할 수 있습니다. 일반적인 오류 중 하나는 "컴파일러는 다양한 유형의 여러 정의를 지원하지 않습니다."입니다. 이 오류는 일반적으로 여러 변수나 함수가 서로 다른 파일이나 동일한 파일의 서로 다른 위치에 정의되어 있고 해당 유형이 일치하지 않아 컴파일러가 사용할 정의를 결정할 수 없는 것과 관련됩니다. 이 기사에서는 이 오류의 원인과 해결 방법을 설명합니다.

1. 오류 원인

C++에서는 변수나 함수가 다른 파일에 정의되거나 동일한 파일의 다른 위치에 정의될 수 있습니다. 여러 정의가 있는 경우 컴파일러는 어떤 정의를 사용할지 결정해야 합니다. 여러 정의의 유형이 서로 다른 경우 컴파일러는 사용할 정의를 결정할 수 없으며 오류를 보고합니다.

예를 들어 x라는 변수와 y라는 함수가 프로그램에 정의되어 있습니다.

// file1.cpp
int x = 1;

// file2.cpp
double y() { return 2.0; }

이 예에서 x 유형은 int이고 y 유형은 double입니다. 컴파일 중에 file1.cpp와 file2.cpp가 동시에 포함되면 컴파일러는 "컴파일러는 유형이 다른 여러 정의를 지원하지 않습니다"라는 오류를 보고합니다.

2. Solution

이 문제를 해결하려면 extern 키워드를 사용하여 이러한 변수나 함수를 다른 파일에서 사용할 수 있도록 선언해야 합니다.

file1.cpp에서 extern을 사용하여 y 함수를 선언해야 컴파일러가 y 함수가 다른 파일에 정의되어 있음을 알고 y 함수의 반환 유형을 올바르게 구문 분석할 수 있습니다. 마찬가지로 file2.cpp에서 x 변수는 extern을 사용하여 선언해야 합니다. 수정된 코드는 다음과 같습니다.

// file1.cpp
extern double y();

int x = 1;

// file2.cpp
extern int x;

double y() { return 2.0; }

이 예에서 extern 키워드는 이러한 변수나 함수가 다른 파일에 정의되어 있음을 컴파일러에 알리는 데 사용됩니다. 이러한 방식으로 컴파일 타임에 컴파일러는 유형을 올바르게 확인할 수 있으므로 "컴파일러는 유형이 다른 여러 정의를 지원하지 않습니다."라는 오류를 피할 수 있습니다.

3. 요약

C++에서 여러 정의가 나타날 때 정의된 유형이 다른 경우 컴파일러는 "컴파일러는 유형이 다른 여러 정의를 지원하지 않습니다"라는 오류를 보고합니다. 이 문제를 해결하려면 extern 키워드를 사용하여 이러한 변수나 함수를 선언하여 다른 파일에서 사용할 수 있도록 해야 합니다. 이렇게 하면 컴파일 타임에 컴파일러가 해당 유형을 올바르게 확인할 수 있으므로 오류를 피할 수 있습니다.

위 내용은 C++ 컴파일 오류: 컴파일러는 다양한 유형의 다중 정의를 지원하지 않습니다. 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.