본문 바로가기
밑바닥부터 시작하는 게임 개발/C++

[밑바닥 C++] 1. 역시 시작은 Hello World

by KK1 2021. 7. 4.

처음으로 만들어보는 Hello World 프로그램 작성

시작하기전 통합 개발 환경(IDE) Visual Studio 2019 Community Edition 을 설치합니다.

Visual Studio 2019 설치

https://visualstudio.microsoft.com/ko/vs/ 에 접속해서 설치하면 됩니다.

 Visual Studio 2019 C++ 설치 항목 체크 

설치할 때 옆의 항목은 반드시 체크해야 C++ 개발을 할 수 있으니 체크합니다.

 

 

설치가 완료되었다면 모든 프로그래밍 언어의 시작인 Hello World 프로그램을 작성하겠습니다.

HelloWorld 프로젝트 생성 - 1
HelloWorld 프로젝트 생성 - 2
HelloWorld 프로젝트 생성 - 3

새 프로젝트 만들기  빈 프로젝트 선택  프로젝트 이름 설정  생성을 눌러 프로젝트를 생성해줍니다. 

HelloWorld 프로젝트에 소스코드 추가 - 1
HelloWorld 프로젝트에 소스코드 추가 - 2

다음은 우리가 컴퓨터와 대화하기 위한 C++의 코드를 작성할 소스 파일을 만들어 보겠습니다. 오른쪽 메뉴의 소스 파일 오른쪽 클릭 → 추가 → 새 항목을 누른 후 C++ 파일(.cpp)를 선택 후 이름을 Main.cpp 라는 이름으로 추가하겠습니다.

 

Main.cpp

#include <iostream>
using namespace std;

int main()
{
	cout << "Hello World" << endl;
	return 0;
}

새로 추가한 Main.cpp 파일에 다음과 같이 작성해 주었습니다. 

Main.cpp 실행

작성을 완료하였으면 아래의 방법중 1가지를 이용하여 HelloWorld 프로그램을 실행을 시켜봅니다.

  1. 로컬 Windows 디버거 버튼을 클릭
  2. F5를 누르기
  3. 디버깅 → 디버깅 시작 또는 디버그 하지 않고 시작

HelloWorld 프로그램 실행 화면

이렇게 우리는 Hello World 프로그램을 작성해 보았습니다.


Hello World 프로그램 생성, 작성, 실행에는 어떤 일들이? 

과연 프로젝트를 생성하고 소스를 작성하고 실행할 때 어떤 일들이 발생했을까요? 

하나씩 알아봅니다.

소스 코드 작성 전처리기 컴파일 어셈블러  링크  실행파일 생성(exe)

우리가 현재까지 진행했던 내용입니다. 

Main.cpp 소스 코드 작성을 가장 먼저 진행하였고 그 후 여러 방법을 통해 실행시켰습니다.

이때 가장 먼저 전처리기(preprocessor)가 동작합니다. 전처리기 컴파일 직전 실행되는 별도의 프로그램입니다.

우리가 작성한 코드 중 #include <iostream> 부분으로 사용자가 작성한 코드중 #이 붙은 코드부터 줄바꿈 까지를 컴퓨터가 보기 쉽도록 번역하기 전 적절하게 변경시켜주는 작업을 진행합니다. 이때 # 전처리 지시자라고 합니다.

  • 전처리기를 통하여 iostream에 모여 있는 기능을 가져옴

조금 비유를 들어 설명하자면 요리 전에 레시피를 보고 필요한 재료를 모으는 단계라고 보면 됩니다.

전처리 지시자에 사용할 수 있는 문법으로 #define, #ifdef 등이 있고 추후 알아볼 예정입니다.

 

전처리 후 코드는 컴파일(Compiler)을 진행합니다. 컴파일은 우리가 작성한 고수준 언어 어셈블리어로 번역하는 단계입니다. 번역이 완료된 내용은 어셈블러(Assembler)를 통하여 컴퓨터가 인식하도록 기계어로 번역하는 단계입니다.

컴파일과 어셈블러가 완료된 obj 파일
obj 파일의 내용

이와 같이 컴파일 어셈블러 단계를 거치면 .obj 라는 번역된 기계어가 저장된 파일이 생성됩니다.

기계어니 당연히 저희는 알아 볼 수 없는 형태로 구성되어 있습니다. 혹시 읽고 이해되시면 제보바랍니다🤣.

여기까지 모아둔 재료를 요리를 하기 위해 가공하는 단계로 비유할 수 있습니다.

생성된 실행 파일(.exe)

링크(linker) 단계에서 번역된 기계어(.obj 외에도 .lib가 존재함) 하나로 묶는 작업을 진행, 실행 파일을 생성 합니다.

모아둔 재료 또 다른 곳에 준비해둔 재료를 이용하여 요리를 완성하는 단계로 비유할 수 있습니다.

 

위와 같은 과정을 통하여 우리가 작성한 코드가 프로그램이 되어 실행할 수 있게 됩니다.


HelloWorld.cpp 분석

우리가 작성한 HelloWorld 코드에는 어떤 내용과 문법을 사용했는지 간단하게만 알아보겠습니다.

#include <iostream>

먼저 가장 첫 줄. #include헤더 파일(.h)을 포함하라는 명령의 전처리 지시자입니다. 헤더 파일에 추후 알아볼 예정이니 지금은 명령어가 모여있는 파일정도로 생각하고 넘어갑니다.

iostream(input-output stream)이라는 C++ 입출력 표준 헤더 파일을 포함하도록 하였습니다. 

(Visual Studio C++ 설치시 기본 포함)

using namespace std;

using은 단어 그대로 '~을 사용하여'라는 뜻으로 namespace가 std 인 것을 사용하겠다 라는 의미가 됩니다.

위 코드가 없을 경우 아래의 cout 이라는 기능을 std::cout과 같은 형태로 사용하게 됩니다.

여기서 ::스코프 연산자라고 합니다.

int main()
{
	cout << "Hello World" << endl;
	return 0;
}

int main() 부분은 main 이라는 이름의 함수를 작성한 코드입니다. 함수도 뒤에서 다룰 내용이지만 간단하게만 알아보자면 영어로 Function, 다시 한국어로 번역하면 기능이라는 뜻입니다. 함수 = 기능으로 생각하시면 됩니다.

main 함수는 프로그램을 실행하면 해당 프로그램이 가장 먼저 찾아서 실행하는 기능, 프로그램의 시작입니다.

내 코드에서는 딱 1개만 작성할 수 있습니다. 2개 일때 상황이 궁굼하시면 위 내용 복붙 후 int main(int a)과 같이 수정하여 실행해보세요!

 

cout은 데이터를 콘솔 윈도우(창)에 데이터를 출력해주는 '객체'입니다. 

endl개행(줄바꿈)을 수행하는 '객체'입니다.

여기서 객체라는 단어가 나왔는데 한참 나중에 알아보게 될 내용입니다. 우선은 기능이라고 생각하고 사용합니다.

 

<<은 원래는 비트 단위 연산에 사용하는 시프트 연산자이지만 cout에서는 데이터를 추출하는 형태의 연산자로 사용되고 있습니다. cout과 사용시 콘솔창데이터를 추출하여 출력하는 기능으로 생각하고 사용합니다.

 

여기까지 Hello World 프로그램을 만들고 분석해보았습니다.


이전편

2021.07.04 - [밑바닥부터 시작하는 게임 개발/C++] - [밑바닥 C++] 0. C++를 시작하며

 

다음편

2021.07.10 - [밑바닥부터 시작하는 게임 개발/C++] - [밑바닥 C++] 2. HP 표기 등을 위한 변수

반응형

댓글