>백엔드 개발 >C++ >C에서 'main' 함수가 재귀적으로 자신을 호출할 수 있나요?

C에서 'main' 함수가 재귀적으로 자신을 호출할 수 있나요?

DDD
DDD원래의
2024-12-18 18:52:11184검색

Can the `main` Function Recursively Call Itself in C  ?

C에서 main 함수 자체를 호출할 수 있습니까?

문제:

다음 코드는 오류 없이 컴파일되지만 무한대에 들어갑니다. 루프:

int main() {
    return main();
}

답변:

C에서 메인 함수 자체를 호출하면 정의되지 않은 동작이 발생합니다. 정의되지 않은 동작은 다음을 포함한 모든 일이 발생할 수 있음을 의미합니다.

  • 프로그램이 충돌할 수 있습니다.
  • 프로그램이 영원히 실행될 수 있습니다.
  • 프로그램이 메모리를 손상시킬 수 있습니다.

C 표준에서는 main 함수의 이름을 표현식으로 지정해서는 안 된다고 명시적으로 명시하고 있습니다. main 호출 시 컴파일러는 진단 메시지를 발행하고 코드를 컴파일하지 않아야 합니다.

이 표준 요구 사항에도 불구하고 일부 컴파일러는 진단 메시지를 발행하지 않고 프로그램 컴파일을 허용할 수 있습니다. 그러나 그러한 프로그램을 실행하면 정의되지 않은 동작이 호출됩니다.

컴파일러 동작:

컴파일러는 main을 금지하는 규칙을 포함하여 C 표준의 모든 규칙을 시행할 필요는 없습니다. 스스로를 부르고 있습니다. 경고나 오류가 발생할 수 있지만 정확한 동작은 컴파일러와 컴파일러 설정에 따라 다릅니다.

의미:

main을 재귀적으로 호출하는 것은 C에서 불법입니다. 컴파일러가 허용하더라도 프로그램은 정의되지 않은 동작을 나타내므로 의존해서는 안 됩니다.

위 내용은 C에서 'main' 함수가 재귀적으로 자신을 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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