요약
이 수업은 C++의 최소 프로그램을 부품으로 나누고 각 부품의 역할을 설명한다. 포함 지시문은 프로그램이 라이브러리의 어떤 부분에 의존하는지를 선언하며, 각 구성 요소는 자기 헤더를 요구한다. 때로는 다른 헤더가 그것을 “간접적으로” 끌어오더라도 마찬가지이다. main 함수는 진입점이고, 그 반환값이 시스템이 받는 종료 코드이다. std 네임스페이스는 라이브러리의 이름들을 모아 두며, 이 강좌는 그 이름들을 항상 접두사와 함께 쓴다. 문은 세미콜론으로 끝나고, 중괄호는 문들을 블록으로 묶으며, 주석은 코드가 스스로 말하지 않는 것을 설명한다. 수업의 끝에서는 이 강좌가 모든 프로그램에서 따르는 스타일 가이드와, std::cout 스트림과 std::endl 조작자를 쓰는 남의 코드를 읽는 법을 다룬다.
학습 목표
- 프로그램에서 포함 지시문,
main함수, 문, 블록, 주석을 찾아내고 각각의 역할을 설명한다. #include지시문이 무엇을 하는지, 그리고 라이브러리의 각 구성 요소가 왜 자기 헤더를 요구하는지를, 특정 컴파일러에서는 그 헤더 없이도 프로그램이 컴파일되는 경우까지 포함하여 설명한다.- 구조 오류(닫히지 않은 중괄호, 빠진 세미콜론, 생략된 헤더)가 있는 프로그램을 컴파일러의 메시지를 첫 번째 것부터 읽어 가며 수정한다.
- 프로그램을 이 강좌의 스타일 가이드에 따라 다시 쓰고 각 변경의 이유를 밝힌다.
최소 프로그램
지난 수업에서는 프로그램을 살펴보지 않은 채 컴파일하고 실행했다. 이제 그 프로그램을 한 줄씩 읽는다. 각 줄이 서로 다른 요구에 응하기 때문이다. 어떤 줄은 언어의 요구에, 어떤 줄은 운영 체제의 요구에, 어떤 줄은 코드를 읽는 사람의 요구에 응한다. 프로그램은 다음과 같다.
// 첫 프로그램: 한 줄을 쓰고 끝난다.#include <print>int main(){ std::println("안녕, 세상");}안녕, 세상첫 줄은 주석이다. 슬래시 두 개로 시작하여 줄 끝까지 이어지며, 컴파일러는 이것을 버린다. 프로그램을 읽을 사람을 위해 쓴 것이다. 둘째 줄은 포함 지시문이다. 컴파일하기 전에 <print> 헤더를 끼워 넣으라고 요구하는데, 표준 라이브러리는 이 헤더에서 std::println 함수를 선언한다. 빈 줄은 아무 효과도 없다. 프로그램의 준비 부분과 내용을 나눌 뿐이다. 넷째 줄은 함수 main의 시작으로, 실행이 시작되는 곳이며, 다섯째 줄의 중괄호는 그 블록을 연다. 블록은 마지막 줄에서 닫힌다. 블록 안에는 세미콜론으로 끝나는 문이 하나뿐이다. std::println 함수의 호출로, 따옴표 사이의 텍스트를 쓰고 이어서 줄을 바꾼다.
프로그램에 끝내기 위한 명령이 하나도 없다는 점에 주목해야 한다. main 함수의 마지막 중괄호에 이르면 실행이 끝나고, 프로그램은 모든 것이 잘 되었다고 시스템에 알린다. 그 방법은 뒤에서 살펴본다. 이로부터 완전한 프로그램에는 다섯 가지 부품으로 충분하다는 결론이 나온다. 주석, 지시문, main 함수, 블록, 문이다. 이어지는 절들은 이 순서대로 이것들을 살펴보되, 주석만은 문과 블록과 함께 다룬다.
인사 프로그램에서 지시문은 2번 줄이고, main 함수는 4번 줄부터 7번 줄까지 차지하며, 그 블록은 5번 줄의 중괄호에서 7번 줄의 중괄호까지이다. 유일한 문은 6번 줄이고, 유일한 주석은 1번 줄이다. 주석을 지워도 프로그램은 똑같이 컴파일되고 같은 출력을 낸다. 다른 부품 가운데 어느 것이든 지우면 더는 컴파일되지 않거나 프로그램이 아니게 된다.
콘텐츠를 불러오는 중…