문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 C언어/문법 (문단 편집) === main 함수 === main 함수는 프로그램의 진입점으로 프로그램이 실행되면 자동으로 호출되는 함수이다. 따라서 한 프로그램당 하나만 정의할 수 있으며, 일반적으로는 이렇게 쓴다. {{{#!syntax cpp int main() { [실행할 코드] return 0; } }}} main 함수에 입력 인자를 받는 경우에는 다음과 같이 정의해야 한다. {{{#!syntax cpp int main(int argc, char* argv[], char* envp[]) { [함수 내용] return 0; } }}} argc는 컴파일된 프로그램이 받는 매개변수의 개수이고, argv[]는 매개변수 문자열들의 배열이다. argv[]는 argv[argc]를 의미한다. 배열 argv[]의 첫번째 원소 {{{argv[0]}}}은 주로 프로그램 자신의 이름이다.[* {{{exec()}}}(유닉스)나 {{{CreateProcess()}}}(윈도우)와 같은 방식으로 프로세스가 시작되는 경우 {{{argv[0]}}}가 항상 프로세스 파일명이 아닐 수 있다.] 입력받는 매개변수의 문자열들은 자동적으로 원소 argv[1]부터 원소 argv[argc-1]까지 입력받은 순서대로 저장된다. 비표준 구현인 envp[]는 [[운영체제]] 환경변수 문자열들의 배열이다. argv[]는 자주 쓰이나 envp[]는 거의 쓰이지 않고 main 함수의 매개인자에서 생략되는 경우도 많다. {{{argc}}}, {{{argv}}}와 마찬가지로 {{{envp}}}가 없어도 환경변수 문자열에 접근하는 방법이 있으므로 없어도 된다. 저차원적인 프로그램에서는 매개인자 없이 {{{int main(void)}}} 또는 {{{int main()}}}으로 main 함수를 정의하는 경우가 많지만 상업용 프로그램 및 대규모 프로그램에서는 주로 {{{int main(int argc, char* argv[])}}}로 main 함수를 정의한다. 리턴값을 void로 정의할 수도 있지만 이는 비표준적인 문법이다. main 함수에서는 원칙적으로 프로그램 종료 코드를 숫자로써 int 자료형으로 리턴하는 것이 표준이기 때문이다. 암시적으로 main 함수에서 0을 리턴하는 경우에는 정상 종료를 의미하고 이외의 숫자가 리턴되면 비정상 종료를 의미한다. 다만, 시그널 함수를 이용해서 종료 코드를 사용하지 않더라도 프로그램 자신의 종료 상태를 운영체제에 전달할 수 있다. C언어로 짜여진 유닉스 및 리눅스 프로그램의 소스 코드에서는 리턴값 0이 정상 종료를, -1이 비정상 종료를 의미하는 경우가 많다. 특히, 시스템 호출 함수에서 그렇다. main 함수를 void로 리턴값을 정의하거나, int로 리턴값을 정의했으나 {{{return 0;}}} 구문이 없는 경우에는 운영체제는 암시적으로 프로세스의 종료 코드를 0으로 인식한다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기