Main()이 정말로 C 프로그램의 시작인가요?
C 표준에서는 main()을 C 프로그램의 독점적인 시작점으로 정의합니다. 프로그램: "프로그램에는 프로그램의 지정된 시작인 main이라는 전역 함수가 포함되어야 합니다."
그러나 아래 코드는 이 정의와 모순되는 것 같습니다.
int square(int i) { return i*i; } int user_main() { for ( int i = 0 ; i < 10 ; ++i ) std::cout << square(i) << endl; return 0; } int main_ret= user_main(); int main() { return main_ret; }
놀랍게도 이 코드는 초기 실행 지점으로 추정되는 main()에 들어가기 전에 user_main() 함수를 실행합니다. 게다가 코드는 오류나 경고 없이 컴파일됩니다.
프로그램의 '시작' 정의
"프로그램의 시작"이라는 용어를 올바르게 해석하는 것이 중요합니다. 표준에서는 시작을 반드시 첫 번째 코드가 실행될 때가 아니라 프로그램이 시작되는 것으로 간주되는 지점으로 정의합니다.
이 예에서 프로그램은 main()으로 시작하지만 이것이 코드가 없다는 것을 의미하지는 않습니다. 미리 실행합니다. 실제로 상당한 코드는 일반적으로 main() 이전, 특히 초기화 중에 실행됩니다.
표준 준수
코드의 특이한 실행 순서에도 불구하고 기준. 정의에 따르면 user_main()이 더 일찍 실행되더라도 프로그램의 시작은 main()입니다. 실행 순서는 프로그램의 시작이 main() 함수로 정의된다는 사실을 바꾸지 않습니다.
따라서 주어진 코드는 표준을 준수하며 표준의 시작 정의를 무효화하지 않습니다. 프로그램을 main()으로 합니다.
위 내용은 `main()`은 정말 C 프로그램에서 실행되는 첫 번째 코드인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!