0. 컴파일이란
- 인간이 이해할 수 있게끔 작성해놓은 소스 코드를 컴퓨터가 이해할 수 있는 언어로 바꾸는 일
- high-level 언어를 low-level 언어로 바꾸는 일
- 소스 코드를 어셈블리어 혹은 object 코드로 바꾸는 일
1. 컴파일러
- 컴파일을 해주는 프로그램
2. 컴파일 과정
- 전처리 -> 컴파일 -> 어셈블 -> 링크
- 전처리 : 전처리 구문들 처리, #define, #include 등 #으로 시작하여 세미콜론없이 개행문자로 종료하는 구문들(.cpp -> .i)
- 컴파일 : 전처리 된 .i 파일을 어셈블리어 파일인 .s로 변환
- 어셈블 : .s 어셈블 파일을 .o 목적 파일로 변환, 어셈블리어란 기계어보다 하나 위이고 컴퓨터가 바로 읽을 수 있는 언어이지만 인간이 읽기엔 불편한 언어
- 링크 : .o 파일들과 라이브러리 파일을 연결하여 .exe로 최종 실행 가능하게끔 만들어 줌
3. 컴파일러 vs 인터프리터
- 컴파일러는 위 과정을 거쳐 목적파일을 만들어 최종적으로 .exe 파일을 구동가능하게 함
- 인터프리터란 컴파일러와 다르게 따로 생성하는 파일 없이 한 줄 씩 읽어 처리
- 새로 생겨나는 파일은 없겠지만 실행시간엔 그만큼 느릴 수 밖에 없음
4. C# vs C++
- C++ : 객체 지향, 수동 메모리 관리
- C# : 객체 지향 + 컴포넌트 지향, 자동 메모리 관리
- 결국 차이는 왜 이 언어를 사용하는가가 될 것 같다.
- C++는 네트워킹, 드라이버, 게임 프로그래밍, 서비스 측면의 애플리케이션 개발에 유리하고 광범위하게 사용가능함
- C#은 .NET 프레임워크를 사용한 애플리케이션 개발 가능(.Net 프레임워크는 윈도우에서만 지원하는 프레임워크라고 함), 게임엔진인 유니티에서 C# 사용
5. 게임 프로그래밍에서 C++ 사용하는 이유
- 객체 지향이라는 점이 가장 크게 작용할 것 같음
- 메모리 관리, 리소스 관리, 최적화면에서 C++이 유리함
'C++ > 키워드 정리' 카테고리의 다른 글
키워드 정리 [9] - 포인터 (1) | 2023.12.01 |
---|---|
키워드 정리 [8] - 정수, 실수 (1) | 2023.12.01 |
키워드 정리 [6] - 함수 호출 규약 (0) | 2023.12.01 |
키워드 정리 [5] - 동적 할당 (1) | 2023.12.01 |
키워드 정리 [4] - 구조체 (1) | 2023.12.01 |