main 함수를 정의하는 예는 지금까지 많이 봤다. 프로그램은 main 함수에서 실행을 시작한다. 이 장에서는 C 라이브러리에서 제공하는 함수와 같은 것을 우리가 직접 구현하는 방법에 대해 소개한다. 함수(function)의 주된 목적은 모듈화(modularity)와 코드 인수분해(code factorization)를 제공하는 것이다.
• 함수를 활용하면 코드 중복을 줄일 수 있다. 특히 복사해서 붙여 넣는 방식으로 작업할 때 흔히 발생하는 에러를 방지하고, 여러 군데 퍼져 있는 동일한 기능의 코드를 관리하는 수고도 줄일 수 있다.
• 함수를 사용하면 컴파일 시간을 절약할 수 있다. 여러 곳에 사용할 코드 조각을 함수 안에 캡슐화하면 해당 코드 조각을 여러 번 컴파일할 필요 없이 단 한 번만 컴파일하면 된다.
• 함수로 만들면 나중에 코드를 다시 사용하기 편하다. 특정한 기능을 제공하는 코드를 함수로 추출해 두면 그 함수를 구현할 당시에는 생각조차 못했던 곳에도 쉽게 활용할 수 있다.
• 함수로 만들면 인터페이스를 깔끔하게 만들 수 있다. 함수 인수와 리턴 타입은 연산에 입력해서 출력되는 데이터의 출처와 타입을 명확히 표현한다. 게다가 함수는 선행 조건(pre-condition)과 후행 조건(post-condition)처럼 연산 과정에 변하지 않는 불변형(invariant)을 지정할 수 있게 해 준다.
• 함수를 사용하면 스택에 중간값을 저장하는 방식의 알고리즘을 쉽게 구현할 수 있다.