첫 번째 C++ 프로그램
이제 C++ 개발 환경을 성공적으로 구축하셨으리라 믿습니다.
이론적인 설명을 넘어, 우리가 직접 C++ 코드를 작성하고 실행하며 그 결과물을 눈으로 확인해 볼 시간입니다.
이 장에서는 C++의 가장 기본적인 프로그램 구조를 살펴보고, 세상의 모든 프로그래밍 교재에서 첫 번째 예제로 다루는 "Hello, World!" 프로그램을 직접 만들어보며 C++과의 첫 만남을 가질 것입니다.
C++ 프로그램의 기본 구조
어떤 언어로든 프로그램을 작성하기 전에, 해당 언어의 기본적인 문법 구조를 이해하는 것은 매우 중요합니다.
C++ 프로그램은 마치 잘 정리된 건축물처럼 특정한 규칙에 따라 구성됩니다. 다음은 C++ 프로그램의 가장 기본적인 형태입니다.
#include <iostream> // 1. 헤더 파일 포함
int main() { // 2. main 함수 선언
// 3. 실행될 코드 블록
std::cout << "Hello, C++ World!" << std::endl; // 출력문
return 0; // 4. 프로그램 종료 반환 값
}
각 부분을 자세히 살펴보겠습니다.
-
#include <iostream>
: 이것은 '전처리기 지시자(Preprocessor Directive)'라고 불립니다.#include
는 특정 파일을 현재 소스 코드에 포함시키라는 명령이며,<iostream>
은 "Input/Output Stream"의 약자로, 입출력 기능을 제공하는 표준 라이브러리 헤더 파일입니다. 우리가 화면에 글자를 출력하거나 키보드로부터 입력받는 기능을 사용하려면 반드시 이 헤더 파일을 포함해야 합니다.<
와>
로 감싸는 것은 표준 라이브러리 헤더 파일을 의미합니다. -
int main() { ... }
: 이것은 C++ 프로그램의 시작점이자 가장 핵심적인 부분인main
함수입니다. 운영체제는 C++ 프로그램을 실행할 때 항상main
함수를 먼저 찾아 실행합니다.int
:main
함수가 정수(integer) 값을 반환한다는 것을 의미합니다. 프로그램이 성공적으로 종료되었는지 여부를 운영체제에 알려주는 역할을 합니다.main
: 함수의 이름입니다. C++ 표준에서 프로그램의 시작 함수는 반드시main
이어야 합니다.()
: 함수 이름 뒤에 오는 괄호는 이main
이 함수임을 나타내며, 함수에 전달되는 인자(parameter)를 정의하는 부분입니다. 현재는 비어있으므로 인자가 없다는 뜻입니다.{ }
: 중괄호는 함수의 몸체(body) 또는 코드 블록을 나타냅니다.main
함수가 실행될 때 수행될 모든 명령문들이 이 중괄호 안에 작성됩니다.
-
std::cout << "Hello, C++ World!" << std::endl;
: 이 줄은 화면에 텍스트를 출력하는 명령문입니다.std::cout
: 표준 출력 스트림 객체입니다.cout
은 "character output"의 약자로, 일반적으로 컴퓨터 화면을 가리킵니다.std::
는cout
이std
(standard) 이름 공간(namespace)에 속해 있음을 의미합니다. C++ 표준 라이브러리의 대부분의 기능은std
이름 공간 안에 정의되어 있습니다.<<
: 삽입 연산자(insertion operator)라고 불립니다. 이 연산자는 오른쪽에 있는 데이터를std::cout
스트림으로 "삽입"하여 화면에 출력하도록 지시합니다."Hello, C++ World!"
: 출력하고자 하는 문자열입니다. 큰따옴표로 묶인 것은 문자열 리터럴(string literal)이라고 합니다.std::endl
: "end line"의 약자로, 줄 바꿈(개행)을 하고 출력 스트림의 버퍼를 비우는 역할을 합니다. 즉, 다음 출력이 새 줄에 시작되도록 합니다.std::
는 마찬가지로std
이름 공간에 속해 있음을 의미합니다.;
: 모든 C++ 명령문의 끝에는 세미콜론(semicolon)을 붙여야 합니다. 이는 해당 명령문이 여기서 끝났음을 컴파일러에게 알려주는 역할을 합니다. 세미콜론은 C++ 문법에서 매우 중요하므로 주의해야 합니다.
-
return 0;
: 이 줄은main
함수의 실행을 종료하고 운영체제에 정수0
을 반환하라는 명령입니다.0
은 관례적으로 프로그램이 성공적으로 종료되었음을 의미하는 값입니다. 만약 프로그램 실행 중 오류가 발생했다면,0
이 아닌 다른 정수 값을 반환하여 오류가 발생했음을 알릴 수 있습니다.
"Hello, World!" 프로그램 만들기
이제 앞서 배운 기본 구조를 바탕으로 "Hello, World!" 프로그램을 직접 작성하고 실행해 보겠습니다.
-
새 파일 생성
- Visual Studio Code를 실행합니다.
- "파일(File)" 메뉴에서 "새 파일(New File)"을 클릭하거나,
Ctrl+N
(macOS는Cmd+N
) 단축키를 누릅니다. - 생성된 파일에 아래 C++ 코드를 작성합니다.
-
코드 작성
#include <iostream> // 입출력 기능을 사용하기 위해 포함 int main() { // 프로그램의 시작점인 main 함수 // 화면에 "Hello, C++ World!"를 출력하고 줄을 바꿉니다. std::cout << "Hello, C++ World!" << std::endl; return 0; // 프로그램이 성공적으로 종료되었음을 운영체제에 알립니다. }
-
파일 저장
- 작성한 파일을
hello_world.cpp
라는 이름으로 저장합니다..cpp
확장자는 C++ 소스 파일임을 나타냅니다. - 저장할 위치는 여러분이 작업할 프로젝트 폴더 안에 두는 것이 좋습니다. (예:
C:\my_cpp_projects\hello_world.cpp
)
- 작성한 파일을
-
컴파일 및 실행
- VS Code에서 "보기(View)" 메뉴 -> "터미널(Terminal)"을 클릭하거나
Ctrl+
(백틱 키) 단축키를 눌러 터미널을 엽니다. - 터미널에서 파일이 저장된 디렉토리로 이동합니다. (예:
cd C:\my_cpp_projects
) - 다음 명령어를 입력하여 코드를 컴파일합니다:
g++ hello_world.cpp -o hello_world
g++
: C++ 컴파일러를 호출하는 명령어입니다.hello_world.cpp
: 컴파일할 소스 파일의 이름입니다.-o hello_world
: 컴파일된 실행 파일의 이름을hello_world
로 지정하는 옵션입니다. Windows에서는 자동으로.exe
확장자가 붙어hello_world.exe
가 됩니다.
- 컴파일 과정에서 아무런 오류 메시지가 나타나지 않았다면, 컴파일이 성공한 것입니다. 이제 다음 명령어를 입력하여 프로그램을 실행합니다:
./hello_world
- Windows에서는
hello_world.exe
또는 간단히hello_world
라고 입력할 수 있습니다. - macOS/Linux에서는
./hello_world
와 같이./
를 붙여 현재 디렉토리의 실행 파일을 의미함을 명시합니다.
- Windows에서는
- 터미널에 다음과 같이 출력되는 것을 확인합니다
Hello, C++ World!
- VS Code에서 "보기(View)" 메뉴 -> "터미널(Terminal)"을 클릭하거나
축하드립니다! 여러분은 C++로 첫 번째 프로그램을 성공적으로 작성하고 실행하셨습니다.
비록 간단한 프로그램이지만, 이 작은 성공은 앞으로 C++ 학습 여정을 계속해 나갈 중요한 동기가 될 것입니다.
주석(Comments)의 중요성
코드 중간에 #include <iostream>
옆이나 main
함수 안에 #include <iostream> // 입출력 기능을 사용하기 위해 포함
과 같이 "//"로 시작하는 텍스트를 보셨을 것입니다.
이것을 주석(Comment) 이라고 부릅니다.
주석은 컴파일러가 무시하는 부분으로, 프로그램의 실행에는 아무런 영향을 미치지 않습니다.
하지만 프로그래머가 코드에 대한 설명이나 메모를 남겨두어 다른 사람(혹은 미래의 자신)이 코드를 더 쉽게 이해할 수 있도록 돕는 매우 중요한 역할을 합니다.
C++에서 주석을 작성하는 방법은 두 가지가 있습니다.
-
한 줄 주석:
//
뒤에 오는 모든 내용은 해당 줄의 끝까지 주석으로 처리됩니다.int age = 30; // 나이를 저장하는 변수
-
여러 줄 주석:
/*
로 시작하여*/
로 끝나는 블록 안의 모든 내용은 주석으로 처리됩니다. 여러 줄에 걸쳐 긴 설명을 작성할 때 유용합니다./* * 이 함수는 사용자로부터 두 개의 숫자를 입력받아 * 합계를 계산하여 반환합니다. */ int calculateSum(int a, int b) { return a + b; }
주석은 좋은 프로그래밍 습관의 중요한 부분입니다.
코드를 작성할 때, 나중에 다시 보거나 다른 사람이 볼 때 이해하기 쉽도록 적절하게 주석을 달아주는 습관을 들이는 것이 좋습니다.