>백엔드 개발 >C++ >C++ 구문 오류: 함수 내에서 함수 정의가 허용되지 않습니다. 어떻게 해결합니까?

C++ 구문 오류: 함수 내에서 함수 정의가 허용되지 않습니다. 어떻게 해결합니까?

PHPz
PHPz원래의
2023-08-21 23:28:532603검색

C++ 프로그래밍에서는 다양한 구문 오류가 자주 발생합니다. 가장 일반적인 문제 중 하나는 함수 내에서 함수를 정의하는 것입니다. 우리 모두 알고 있듯이 함수 정의는 일반적으로 전역 범위에서 수행됩니다. 그러나 C++에서는 함수 내에 함수를 정의하는 것이 허용되지 않으므로 이 구문 오류가 발생하면 컴파일러는 코드를 전달하지 못합니다.

이 문제의 원인은 함수 내의 정의로 인해 컴파일러가 해당 범위를 인식하지 못하기 때문입니다. 특히 내부 함수와 외부 함수의 매개변수 이름이 동일한 경우 컴파일러는 혼동을 일으킬 수 있습니다. 따라서 이 문제를 해결하려면 내부 함수 정의를 해당 함수 밖으로 이동하고 외부 함수 외부에서 정의해야 합니다.

이 문제를 해결하는 방법을 보여드리겠습니다. 예를 들어, 다음 프로그램에서는 정수의 제곱을 계산하는 int square(int x) 함수를 정의합니다. 이 함수의 내부 정의는 외부 함수의 매개변수 이름을 사용하며 이를 적절한 범위에 넣지 않았습니다.

#include<iostream>
using namespace std;

int main()
{
    int x = 5;
    int square(int x)
    {
        return x * x;
    }
    int result = square(x);
    cout << "The square of " << x << " is " << result << endl;
    return 0;
}

이 프로그램을 컴파일할 때 컴파일러는 다음 오류를 생성합니다.

error: expected constructor, destructor, or type conversion before ‘(’ token
int square(int x)

이 문제를 해결하려면 내부 함수를 밖으로 이동하여 외부 함수 외부에 배치해야 합니다. 수정된 프로그램은 다음과 같습니다.

#include<iostream>
using namespace std;

int square(int x)   //将函数square()移到外部函数之外
{
    return x * x;
}

int main()
{
    int x = 5;
    int result = square(x);
    cout << "The square of " << x << " is " << result << endl;
    return 0;
}

이제 square() 함수를 외부 함수 외부로 이동하고 내부 정의를 삭제했습니다. 이런 방식으로 우리는 프로그램을 성공적으로 컴파일하고 실행할 수 있습니다.

구문 오류를 수정할 때 함수 정의에 대한 C++의 요구 사항과 제한 사항을 항상 염두에 두어야 합니다. 적절한 범위에 함수 정의를 배치하면 몇 가지 일반적인 구문 오류를 피할 수 있습니다. 코드를 작성할 때 우리는 조심스럽고 엄격해야 하며 프로그램의 정상적인 작동을 보장하기 위해 발생할 수 있는 문제에 항상 주의를 기울여야 합니다.

위 내용은 C++ 구문 오류: 함수 내에서 함수 정의가 허용되지 않습니다. 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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