>백엔드 개발 >C++ >C에서 Main()으로의 재귀가 법적으로 허용됩니까?

C에서 Main()으로의 재귀가 법적으로 허용됩니까?

DDD
DDD원래의
2024-11-12 16:41:02932검색

Is Recursion into Main() Legally Allowed in C  ?

C에서 Main()으로의 재귀 적법성 탐색

프로그래머들 사이에서 반복되는 논쟁은 C에서 main()으로의 재귀 적법성입니다. 씨. 일부 소스에서는 금지된 것으로 제안하지만 다른 소스에서는 이러한 코드를 허용하는 컴파일러의 모순된 동작을 보여줍니다.

C 표준의 관점

3.6의 C 표준에 따르면. 1/3, main()으로의 재귀는 명시적으로 금지됩니다. "main 함수는 프로그램."

표준 맥락에서 "사용됨" 이해

표준에서는 "사용됨"을 다음과 같이 정의합니다. 잠재적으로 평가되는 표현식에 그 이름이 나타납니다."

예제 코드의 경우 제시:

int main()
{
    main();
}

main()에 대한 호출은 잠재적으로 평가되는 표현식인 main()의 본문 내에 나타납니다. 따라서 표준 정의에 따르면 main()이 프로그램 내에서 사용되어 불법으로 간주됩니다.

컴파일러 동작 및 잠재적 예외

표준의 금지에도 불구하고 컴파일러는 다음과 같습니다. g는 이러한 코드를 오류 없이 컴파일할 수 있습니다. 이 동작은 일반적으로 권장되지 않으며 의존해서는 안 됩니다. 컴파일러는 이러한 상황을 비표준 또는 구현별 방식으로 처리할 수 있습니다.

Main()으로의 재귀 방지

C 표준 준수를 보장하고 잠재적인 문제를 방지하려면 , main()으로의 재귀를 피하는 것이 좋습니다. 대신, 언어 규칙을 위반하지 않고 원하는 기능을 달성하기 위해 대체 디자인 패턴이나 프로그래밍 기술을 사용하는 것을 고려해보세요.

위 내용은 C에서 Main()으로의 재귀가 법적으로 허용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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