일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 소멸자
- 언리얼 엔진5
- 복사생성자
- 복사대입연산자
- C++
- UE5
- 게임프로그래밍패턴
- effectivec++
- 생성자
- 프로그래밍
- 게임개발
- 자료구조
- 언리얼엔진5
- 배열
- CPP
- Unreal Engine
- BehaviorTree
- 데이터구조
- 디자인패턴
- 포인터
- Unreal
- C언어
- cpp개발
- 언리얼엔진
- 언리얼
- Unreal Engine5
- 게임 개발
- AI
- 프로세스
- 언리얼5
- Today
- Total
리얼 개발
[C++] 1. Hello World 본문
첫번째 C++ 프로그램을 만들어보자
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World" << endl;
return 0;
}
해당 코드는 Visual Studio 2022 환경에서 작성했다. 코드 작성 후 Ctrl + F5 키를 눌러 빌드 및 실행을 해보자.
- #include <iostream>
- 전처리기라고 부르며 컴파일 전에 <iostream> 이란 라이브러리 안에 들어있는 코드들을 그대로 복사해준다.
- using namespace std;
- 말 그대로 네임스페이스라고 부르며 함수나 클래스 혹은 변수 이름들을 구별할 수 있도록 하는 논리적인 공간이다.
- int main()
- 프로그램 실행시 가장 먼저, 무조건 실행되는 함수이다. 더블클릭을 게임같은 프로그램을 실행할 때 이 main() 함수가 실행된다. 시작 함수이다.
- { }
- 함수의 범위이다. main() 함수의 시작과 끝
- cout
- 모니터에 출력해주는 객체이다.
- endl
- 줄바꿈을 해주는 객체이다.
- return 0;
- 프로그램이 정상적으로 종료되었다고 운영체제에게 알려준다.
출력 결과
visual studio에 해당 코드를 작성해서 위와 같은 출력 결과를 얻었을 것이다. 이제 어떻게 해서 Hello World를 출력하는 프로그램이 만들어졌는지 알아보겠다.
먼저 우리는 visual studio라는 컴파일러에 코드를 입력했다.
코드는 우리가 컴퓨터에게 시킬 명령들이다. 전에도 말했 듯 컴퓨터는 우리와 언어가 달라 저런 영어 글자를 알아듣지 못한다. 그럼 0101001 로 이루어진 기계어(이진수)로 바꿔줘야 하는데 우리가 쓴 코드를 기계어로 바꿔주는 도구가 컴파일러이다. 한마디로 컴파일러는 번역가이고 코드->기계어 번역 과정을 컴파일 이라고 한다. 전처리기는 이 컴파일 전(코드가 번역되기 전)에 실행되는 녀석이다.
중간에 어셈블 과정도 있다. 컴파일 과정은 컴코드 -> 어셈블러 -> 기계어 순서로 번역되고 어셈블러는 기계어와 일대일로 매치되는 코드이다. 이를 번역해주는 것을 어셈블이라고 한다. 어셈블 과정까지 마치고 나면 우리의 코드는 오브젝트 파일 (.obj) 형식으로 변환된다.
컴파일(어셈블 포함) 과정을 통해 각 파일들이 기계어로 번역되었다면 이제 하나로 연결해주어야 한다. 책을 번역할 때도 각 낱장별로 번역된 종이들을 하나로 모아 묶어야 책이듯, 각각의 Object File 은 기계가 이해할 수 있는 번역본일 뿐 실행을 할 수 있는 파일이 아니다. 즉, Object File 들과 필요한 라이브러리들을 연결 시켜주고 최종적으로 하나의 'executable file (실행가능한 파일)'로 만들어준다. 우리가 흔히 어떤 프로그램을 사용할 때 .exe 라는 확장자를 갖는 파일을 실행시킨다. 이 exe가 바로executablue 의 줄임말이다.
컴파일과 링킹 과정을 합쳐 빌드라고 부르기도 한다. 이 모든 과정이 끝나고 Visual Studio 파일이 저장되는 경로를 찾아가보면 실행파일이 만들어진 것을 볼 수 있다.
'C++ > 어려운 C++' 카테고리의 다른 글
[C++] 5. 배열과 구조체 (Array and Struct) (0) | 2024.06.26 |
---|---|
[C++] 4. 함수(Function) (0) | 2024.06.26 |
[C++] 3. 제어문 (control_statement) (0) | 2024.06.26 |
[C++] 2. Dealing with Data (0) | 2024.06.26 |
[C++] 0. 소개 (2) | 2024.06.26 |