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 컴파일러는 값이 반환되지 않을 때 mainvoid의 반환 형식을 가질 수 있도록 해줍니다. wmain에 대한 argvenvp 매개 변수를 형식 char**로 정의할 수도 있습니다. 인수 설명에 대한 자세한 내용은 인수 설명을 참조하세요.

설명

소스 프로그램 내의 함수는 하나 이상의 특정 작업을 수행합니다. main 함수는 각 작업을 수행하기 위해 이러한 함수를 호출할 수 있습니다. 다른 함수를 호출할 때 main은 실행이 함수의 첫 번째 문에서 시작될 수 있도록 해당 함수에 실행 제어를 전달합니다. 함수는 return 문이 실행되거나 함수 끝에 도달할 때 main에 제어를 반환합니다.

main을 포함한 모든 함수가 매개 변수를 가지도록 선언할 수 있습니다. "매개 변수" 또는 "정식 매개 변수"라는 용어는 함수에 전달되는 값을 받는 식별자를 가리킵니다. 매개 변수로의 인수 전달에 대한 자세한 내용은 매개 변수를 참조하세요. 한 함수가 다른 함수를 호출할 때 호출된 함수는 호출 함수에서 해당 매개 변수에 대한 값을 받습니다. 이러한 값을 인수라고 합니다. 함수 시그니처에 표시된 형식을 사용하여 명령줄에서 인수를 받을 수 있도록 main에 정식 매개 변수를 선언할 수 있습니다.

main 함수에 정보를 전달하려는 경우 일반적으로 매개 변수의 이름을 argcargv로 지정합니다. 단, C 컴파일러는 이러한 이름을 요구하지 않습니다. 일반적으로 세 번째 매개 변수가 main에 전달될 경우 해당 매개 변수의 이름은 envp로 지정됩니다. argc, argvenvp에 대한 형식은 C 언어에서 정의됩니다. argvchar** argv로 선언하고 envpchar** envp로 선언할 수도 있습니다. 이 단원의 뒷부분에 나오는 예제에서는 이러한 세 가지 매개 변수를 사용하여 명령줄 인수에 액세스하는 방법을 보여 줍니다. 다음 단원에서는 이러한 매개 변수를 설명합니다.

코드가 유니코드 프로그래밍 모델을 준수하는 경우 Microsoft 전용 와이드 문자 버전의 main, wmain을 프로그램의 진입점으로 사용할 수 있습니다. 이 와이드 문자 버전의 main에 대한 자세한 내용은 사용wmain을 참조하세요.

main 종료

프로그램은 일반적으로 main에서 반환되거나 그 끝에 도달할 때 실행을 중지하지만, 여러 가지 이유로 프로그램의 다른 지점에서 종료할 수 있습니다. 예를 들어 일부 오류 조건이 감지되면 프로그램을 강제로 종료할 수 있습니다. 이렇게 하려면 exit 함수를 사용할 수 있습니다. exit 및 사용 예제에 대한 자세한 내용은 exit를 참조하세요.

추가 정보

main 함수와 명령줄 인수(C++)
C++ 명령줄 인수 구문 분석