C++ 프로그래밍에서 때때로 다음과 같은 문제가 발생합니다. 함수 선언 및 정의의 반환 값 유형이 void인데 함수 본문에 return 문이 있습니다. return 문은 void 함수에 나타날 수 없기 때문에 컴파일 오류가 발생합니다. 그러면 이 문제를 어떻게 해결합니까? 이 기사에서는 이에 대해 자세히 설명합니다.
먼저 이 오류에 대한 샘플 코드를 살펴보겠습니다.
void func() { // ... return 1; // ... }
이 코드에서는 반환 값 유형이 void인 func 함수를 정의합니다. 그러나 함수 본문에서는 반환 값이 1인 return 문이 사용됩니다. 이 경우 컴파일러는 코드를 전달할 수 없으며 오류를 보고합니다.
error: return-statement with a value in function returning 'void' [-Werror,-Wreturn-type]
이 오류는 반환 값 유형이 void인 함수에서 return 문을 사용할 수 없음을 나타냅니다.
그럼 어떻게 해결하나요? 실제로는 매우 간단합니다. return 문에서 반환 값을 삭제하기만 하면 됩니다. 수정된 코드는 다음과 같습니다.
void func() { // ... return; // ... }
이제 return 1을 return으로 변경했는데, 이는 값이 반환되지 않음을 의미합니다. 이러한 방식으로 함수는 반환 값 유형이 void라는 요구 사항을 충족하고 컴파일러는 이를 정상적으로 전달할 수 있습니다.
반품문 외에도 다른 곳에서도 이런 문제가 발생할 수 있습니다. 예를 들어, 함수 내에서 반환 값 유형이 void인 지역 변수를 정의하고 함수에서 return 문을 사용하여 지역 변수의 값을 반환하는 경우에도 컴파일 오류가 발생합니다. 이 경우 지역 변수의 반환 값 유형을 다른 유형으로 변경해야 합니다.
또한 C++11에 도입된 auto 키워드를 사용하여 함수의 반환 값 유형을 유추하는 더 나은 솔루션이 있습니다. 이렇게 하면 반환 값 유형을 수동으로 지정할 필요가 없습니다. 예:
auto func() { // ... return 1; // ... }
이 예에서는 auto 키워드를 사용하여 함수의 반환 값 유형을 추론합니다. return 1 문이 함수에서 정수 값을 반환하는 데 사용되기 때문에 컴파일러는 반환 값 형식을 int로 유추합니다.
간단히 말하면, C++로 작성할 때 void를 반환하는 함수를 만났는데 return 문에 오류가 있는 경우 return 문의 값을 삭제하거나 auto 키워드를 사용하여 함수가 void를 반환하는지 확인하면 이 문제를 해결할 수 있습니다. void Require의 반환 값 유형을 따릅니다.
위 내용은 C++ 컴파일 오류: 함수가 void를 반환하는데 return 문이 있습니다. 어떻게 해결하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!