main
함수 및 프로그램 실행
모든 C 프로그램에는 main
이라는 이름을 지정해야 하는 기본 함수가 있습니다. main
함수는 프로그램 실행을 위한 시작 지점 역할을 하며, 일반적으로 프로그램의 다른 함수로 호출을 보내 프로그램 실행을 제어합니다.
다른 모든 C 함수에는 적용되지 않는 여러 제한이 main
함수에는 적용됩니다. main
함수:
inline
으로 선언할 수 없습니다.static
으로 선언할 수 없습니다.- 주소를 사용할 수 없습니다.
- 프로그램에서 호출할 수 없습니다.
main
함수 시그니처
main
함수는 언어에 기본 제공되므로 선언이 없습니다. 이 경우 main
에 대한 선언 구문은 다음과 같습니다.
int main( void );
int main( int argc, char *argv[ ] );
int main( int argc, char *argv[ ], char *envp[ ] );
main
함수는 이러한 서명 중 하나를 사용하여 암시적으로 선언됩니다. main
함수를 정의할 때 이러한 서명을 사용할 수 있습니다. 또한 Microsoft 컴파일러는 값이 반환되지 않을 때 main
이 void
의 반환 형식을 가질 수 있도록 해줍니다. wmain
에 대한 argv
및 envp
매개 변수를 형식 char**
로 정의할 수도 있습니다. 인수 설명에 대한 자세한 내용은 인수 설명을 참조하세요.
설명
소스 프로그램 내의 함수는 하나 이상의 특정 작업을 수행합니다. main
함수는 각 작업을 수행하기 위해 이러한 함수를 호출할 수 있습니다. 다른 함수를 호출할 때 main
은 실행이 함수의 첫 번째 문에서 시작될 수 있도록 해당 함수에 실행 제어를 전달합니다. 함수는 return
문이 실행되거나 함수 끝에 도달할 때 main
에 제어를 반환합니다.
main
을 포함한 모든 함수가 매개 변수를 가지도록 선언할 수 있습니다. "매개 변수" 또는 "정식 매개 변수"라는 용어는 함수에 전달되는 값을 받는 식별자를 가리킵니다. 매개 변수로의 인수 전달에 대한 자세한 내용은 매개 변수를 참조하세요. 한 함수가 다른 함수를 호출할 때 호출된 함수는 호출 함수에서 해당 매개 변수에 대한 값을 받습니다. 이러한 값을 인수라고 합니다. 함수 시그니처에 표시된 형식을 사용하여 명령줄에서 인수를 받을 수 있도록 main
에 정식 매개 변수를 선언할 수 있습니다.
main
함수에 정보를 전달하려는 경우 일반적으로 매개 변수의 이름을 argc
및 argv
로 지정합니다. 단, C 컴파일러는 이러한 이름을 요구하지 않습니다. 일반적으로 세 번째 매개 변수가 main
에 전달될 경우 해당 매개 변수의 이름은 envp
로 지정됩니다. argc
, argv
및 envp
에 대한 형식은 C 언어에서 정의됩니다. argv
를 char** argv
로 선언하고 envp
를 char** envp
로 선언할 수도 있습니다. 이 단원의 뒷부분에 나오는 예제에서는 이러한 세 가지 매개 변수를 사용하여 명령줄 인수에 액세스하는 방법을 보여 줍니다. 다음 단원에서는 이러한 매개 변수를 설명합니다.
코드가 유니코드 프로그래밍 모델을 준수하는 경우 Microsoft 전용 와이드 문자 버전의 main
, wmain
을 프로그램의 진입점으로 사용할 수 있습니다. 이 와이드 문자 버전의 main
에 대한 자세한 내용은 사용wmain
을 참조하세요.
main
종료
프로그램은 일반적으로 main
에서 반환되거나 그 끝에 도달할 때 실행을 중지하지만, 여러 가지 이유로 프로그램의 다른 지점에서 종료할 수 있습니다. 예를 들어 일부 오류 조건이 감지되면 프로그램을 강제로 종료할 수 있습니다. 이렇게 하려면 exit
함수를 사용할 수 있습니다. exit
및 사용 예제에 대한 자세한 내용은 exit
를 참조하세요.