문제:
다음 코드는 오류 없이 컴파일되지만 무한대에 들어갑니다. 루프:
int main() { return main(); }
답변:
C에서 메인 함수 자체를 호출하면 정의되지 않은 동작이 발생합니다. 정의되지 않은 동작은 다음을 포함한 모든 일이 발생할 수 있음을 의미합니다.
C 표준에서는 main 함수의 이름을 표현식으로 지정해서는 안 된다고 명시적으로 명시하고 있습니다. main 호출 시 컴파일러는 진단 메시지를 발행하고 코드를 컴파일하지 않아야 합니다.
이 표준 요구 사항에도 불구하고 일부 컴파일러는 진단 메시지를 발행하지 않고 프로그램 컴파일을 허용할 수 있습니다. 그러나 그러한 프로그램을 실행하면 정의되지 않은 동작이 호출됩니다.
컴파일러 동작:
컴파일러는 main을 금지하는 규칙을 포함하여 C 표준의 모든 규칙을 시행할 필요는 없습니다. 스스로를 부르고 있습니다. 경고나 오류가 발생할 수 있지만 정확한 동작은 컴파일러와 컴파일러 설정에 따라 다릅니다.
의미:
main을 재귀적으로 호출하는 것은 C에서 불법입니다. 컴파일러가 허용하더라도 프로그램은 정의되지 않은 동작을 나타내므로 의존해서는 안 됩니다.
위 내용은 C에서 'main' 함수가 재귀적으로 자신을 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!