icon
1장 : C++ 소개와 개발 환경

첫 번째 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. 프로그램 종료 반환 값
}

각 부분을 자세히 살펴보겠습니다.

  1. #include <iostream>: 이것은 '전처리기 지시자(Preprocessor Directive)'라고 불립니다. #include는 특정 파일을 현재 소스 코드에 포함시키라는 명령이며, <iostream>은 "Input/Output Stream"의 약자로, 입출력 기능을 제공하는 표준 라이브러리 헤더 파일입니다. 우리가 화면에 글자를 출력하거나 키보드로부터 입력받는 기능을 사용하려면 반드시 이 헤더 파일을 포함해야 합니다. <>로 감싸는 것은 표준 라이브러리 헤더 파일을 의미합니다.

  2. int main() { ... }: 이것은 C++ 프로그램의 시작점이자 가장 핵심적인 부분인 main 함수입니다. 운영체제는 C++ 프로그램을 실행할 때 항상 main 함수를 먼저 찾아 실행합니다.

    • int: main 함수가 정수(integer) 값을 반환한다는 것을 의미합니다. 프로그램이 성공적으로 종료되었는지 여부를 운영체제에 알려주는 역할을 합니다.
    • main: 함수의 이름입니다. C++ 표준에서 프로그램의 시작 함수는 반드시 main이어야 합니다.
    • (): 함수 이름 뒤에 오는 괄호는 이 main이 함수임을 나타내며, 함수에 전달되는 인자(parameter)를 정의하는 부분입니다. 현재는 비어있으므로 인자가 없다는 뜻입니다.
    • { }: 중괄호는 함수의 몸체(body) 또는 코드 블록을 나타냅니다. main 함수가 실행될 때 수행될 모든 명령문들이 이 중괄호 안에 작성됩니다.
  3. std::cout << "Hello, C++ World!" << std::endl;: 이 줄은 화면에 텍스트를 출력하는 명령문입니다.

    • std::cout: 표준 출력 스트림 객체입니다. cout은 "character output"의 약자로, 일반적으로 컴퓨터 화면을 가리킵니다. std::coutstd (standard) 이름 공간(namespace)에 속해 있음을 의미합니다. C++ 표준 라이브러리의 대부분의 기능은 std 이름 공간 안에 정의되어 있습니다.
    • <<: 삽입 연산자(insertion operator)라고 불립니다. 이 연산자는 오른쪽에 있는 데이터를 std::cout 스트림으로 "삽입"하여 화면에 출력하도록 지시합니다.
    • "Hello, C++ World!": 출력하고자 하는 문자열입니다. 큰따옴표로 묶인 것은 문자열 리터럴(string literal)이라고 합니다.
    • std::endl: "end line"의 약자로, 줄 바꿈(개행)을 하고 출력 스트림의 버퍼를 비우는 역할을 합니다. 즉, 다음 출력이 새 줄에 시작되도록 합니다. std::는 마찬가지로 std 이름 공간에 속해 있음을 의미합니다.
    • ;: 모든 C++ 명령문의 끝에는 세미콜론(semicolon)을 붙여야 합니다. 이는 해당 명령문이 여기서 끝났음을 컴파일러에게 알려주는 역할을 합니다. 세미콜론은 C++ 문법에서 매우 중요하므로 주의해야 합니다.
  4. return 0;: 이 줄은 main 함수의 실행을 종료하고 운영체제에 정수 0을 반환하라는 명령입니다. 0은 관례적으로 프로그램이 성공적으로 종료되었음을 의미하는 값입니다. 만약 프로그램 실행 중 오류가 발생했다면, 0이 아닌 다른 정수 값을 반환하여 오류가 발생했음을 알릴 수 있습니다.


"Hello, World!" 프로그램 만들기

이제 앞서 배운 기본 구조를 바탕으로 "Hello, World!" 프로그램을 직접 작성하고 실행해 보겠습니다.

  1. 새 파일 생성

    • Visual Studio Code를 실행합니다.
    • "파일(File)" 메뉴에서 "새 파일(New File)"을 클릭하거나, Ctrl+N (macOS는 Cmd+N) 단축키를 누릅니다.
    • 생성된 파일에 아래 C++ 코드를 작성합니다.
  2. 코드 작성

    #include <iostream> // 입출력 기능을 사용하기 위해 포함
    
    int main() { // 프로그램의 시작점인 main 함수
        // 화면에 "Hello, C++ World!"를 출력하고 줄을 바꿉니다.
        std::cout << "Hello, C++ World!" << std::endl; 
        
        return 0; // 프로그램이 성공적으로 종료되었음을 운영체제에 알립니다.
    }
  3. 파일 저장

    • 작성한 파일을 hello_world.cpp라는 이름으로 저장합니다. .cpp 확장자는 C++ 소스 파일임을 나타냅니다.
    • 저장할 위치는 여러분이 작업할 프로젝트 폴더 안에 두는 것이 좋습니다. (예: C:\my_cpp_projects\hello_world.cpp)
  4. 컴파일 및 실행

    • 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와 같이 ./를 붙여 현재 디렉토리의 실행 파일을 의미함을 명시합니다.
    • 터미널에 다음과 같이 출력되는 것을 확인합니다
      Hello, C++ World!

축하드립니다! 여러분은 C++로 첫 번째 프로그램을 성공적으로 작성하고 실행하셨습니다.

비록 간단한 프로그램이지만, 이 작은 성공은 앞으로 C++ 학습 여정을 계속해 나갈 중요한 동기가 될 것입니다.


주석(Comments)의 중요성

코드 중간에 #include <iostream> 옆이나 main 함수 안에 #include <iostream> // 입출력 기능을 사용하기 위해 포함 과 같이 "//"로 시작하는 텍스트를 보셨을 것입니다.

이것을 주석(Comment) 이라고 부릅니다.

주석은 컴파일러가 무시하는 부분으로, 프로그램의 실행에는 아무런 영향을 미치지 않습니다.

하지만 프로그래머가 코드에 대한 설명이나 메모를 남겨두어 다른 사람(혹은 미래의 자신)이 코드를 더 쉽게 이해할 수 있도록 돕는 매우 중요한 역할을 합니다.

C++에서 주석을 작성하는 방법은 두 가지가 있습니다.

  • 한 줄 주석: // 뒤에 오는 모든 내용은 해당 줄의 끝까지 주석으로 처리됩니다.

    int age = 30; // 나이를 저장하는 변수
  • 여러 줄 주석: /*로 시작하여 */로 끝나는 블록 안의 모든 내용은 주석으로 처리됩니다. 여러 줄에 걸쳐 긴 설명을 작성할 때 유용합니다.

    /*
     * 이 함수는 사용자로부터 두 개의 숫자를 입력받아
     * 합계를 계산하여 반환합니다.
     */
    int calculateSum(int a, int b) {
        return a + b;
    }

주석은 좋은 프로그래밍 습관의 중요한 부분입니다.

코드를 작성할 때, 나중에 다시 보거나 다른 사람이 볼 때 이해하기 쉽도록 적절하게 주석을 달아주는 습관을 들이는 것이 좋습니다.