커맨드 라인 인수가 어떻게 작동하는지 이해하려고합니다. 당신이 C에서 main()
기능이 포함 된 소스 코드를 컴파일 할 때 생성 된 오브젝트 파일은 CRT와 연결됩니다명령 줄 인수가 "두 번 전달"됩니까?
, 프로그램의 진입 점 :
이
내가 어떻게 생각입니다_start()
함수 (CRT에 있음)이고_start()
은main()
이라고합니다.는 몇 가지 명령 줄 인수를 프로그램을 실행하고 통과 할 때 이제 명령 줄 인수는
_start()
함수에 전달되고, 다음_start()
main()
으로 명령 행 인수를 다시 전달합니다.
정확합니까?
"이 될 부분으로 분할해야합니다."... 프로그램의 진입 점은 "main"함수가됩니다. 다른 것은 C 프로그램과 관련이 없습니다. 당신이 더 깊게 가고 싶다면, 이것은 C와는 관련이 없으며, 당신의 플랫폼에만 관련됩니다. Linux를 사용하여 crt 및 로더의 소스 코드를 읽고 간단한 프로그램을 한 단계 씩 실행합니다. 이 모든 것을 여기에서 설명하기에는 너무 광범위합니다. – Olaf
인수 배열을 나타내는 포인터와 인수 개수가 전달됩니다. 인수 자체는 런타임에 의해 처리됩니다. – jxh
명령 행을 해석하는 쉘은 매개 변수를 구문 분석하고 인수 배열을 채 웁니다. 그런 다음 컴파일러 특정 메서드를 통해 count 및 pointer를 main에 전달합니다 (스택에 넣거나 레지스터를 main을 호출하기 전에이 값으로 채 웁니다). – blackghost