brunch

You can make anything
by writing

C.S.Lewis

by Moai Sep 07. 2020

C++ main 함수

대학생시절 운영체제 과목 교수님께서 해주셨던 말이 있다.


The devil is in the detail.


내가 가장 좋아하는 문장이자 좌우명이다.

금방 할 수 있을 것 같고 쉽게 배울 수 있을 것 같은데 막상 실전에서는 예상치 못한 변수가 나타난다. 악마는 디테일에 숨어 있기 때문이다. 내가 신이 아니라면 무엇이든 쉽게 보지말자.


좌우명은 영어이지만 막상 난 영어를 잘하지 못한다. 그래서 영어를 잘 하는 사람에게 조언을 구한다. 어떻게 하면 잘 할 수 있나요? 대답은 한결같다. 듣고 따라하고 읽고 쓰고 반복하라. 프로그래밍 언어도 마찬가지인것 같다. 책, 강의를 눈으로 보며 이해했다고 자신하지 말자.


오늘 작성할 글은 C++ 기초 중의 기초 main 함수이다. 3줄짜리 코드이지만 디테일을 통해 악마를 만나보자.


컴퓨터는 영어를 알지 못한다. 전자기기는 오로지 반도체에 전압이 있는가(1) 없는가(0)로 데이터를 기억하고 명령을 내린다. 그들의 언어는 0과 1밖에 없다. 우리가 영어로 프로그램을 만들면 컴퓨터가 이해할 수 있는 컴퓨터 언어로 변경해주어야 한다. 그 작업을 컴파일이라고 한다. 우리가 프로그램을 실행시키면 Windows 라는 운영체제는 프로그램을 실행시키기 위해 적절한 메모리 크기를 할당하고 다른 작업을 일시정지시킬 것이다. 그리고선 지금 작업하고자 하는 위치를 프로그램의 시작위치로 변경할 것이다.  여기서 궁금증이 생기게 된다.


1. 프로그램의 실행 위치는 어디인가? 컴파일을 해주는 컴파일러는 프로그래밍 언어로 작성된 소스코드를 프로그램으로 변환하면서 프로그램 내부에 시작  위치를 알려주는 위치를 메모해준다.  나는 프로그래밍언어로 소스코드를 작성하면서 그 시작 위치를 main이라는 함수로 정했다.


2. 함수는 무엇인가? 우리는 일반적으로 컴퓨터를 사용할 때 키보드/마우스/터치로 데이터를 전달하고 모니터/스피커를 통해 결과를 확인한다. 컴퓨터는 이렇게 입력을 받고 결과를 전달한다. 이 작업을 프로그래밍 언어에서는 함수라고 한다. 함수는 메모리에 저장된 숫자, 문자열과 같은 값을 입력받고 연산을 한 뒤 그에 해당하는 결과를 전달한다. 프로그램이 종료하기 전까지 프로그램 내의 함수는 결과 연산을 위해 필요한 다른 함수들을 호출한다. 모든 함수 호출이 끝나면 결과를 전달한 뒤 프로그램은 종료한다.


3. 함수는 어떻게 생겼는가? 컴퓨터는 결과를 받기 위해 적절한 메모리를 할당해야한다. 따라서 우선 결과를 어떻게 받을 것인지 타입을 알려준다. 난 숫자를 전달할 것이므로 숫자-정수(integer)를 의미하는 int를 쓰겠다. 그리고 함수의 이름을 정한다. 컴파일을 통해 컴퓨터 언어로 변경되면 이 이름은 사라진다. 그저 우리가 보기 쉽게 하기 위해 정한 이름일뿐이다. main이라는 이름을 지어주겠다. 이후 괄호를 통해 입력받을 타입과 이름을 지어준다. 난 딱히 없기 때문에 빈괄호로 두겠다. 마지막으로 {}괄호 안에 결과를 연산하는 코드를 작성하고 return이라는 명령어를 통해 결과를 전달한다. 난 연산없이 바로 0이라는 결과를 전달할 것이므로 return 0이라는 코드를 작성하겠다. 완성된 소스코드의 모습은 다음과 같다.


int main() {     

     return 0;

}



 

매거진의 이전글 디버깅에 익숙해지자
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari