본문 바로가기

분류 전체보기142

TCHAR 에 대한 이해 이 글은 윈도우의 역사, 문자 인코딩의 변화, 그리고 TCHAR의 탄생 배경을 함께 다룹니다.내용이 다소 길고 깊기 때문에, 모든 세부를 완벽히 이해하지 않으셔도 무방합니다.다만 전체 흐름을 따라가면, TCHAR가 왜 생겼고 왜 지금은 과거의 유물이 되었는지 자연스럽게 이해하실 수 있을 것입니다. 1. 아스키 코드 시대초기의 컴퓨터 환경에서는 아스키(ASCII) 코드만으로 충분했습니다.아스키는 문자 하나를 **1바이트(8비트)**로 표현하며, 실제로는 다음과 같은 숫자 체계입니다.'A' → 65'B' → 66'a' → 97'0' → 48 즉, 문자는 개념이 아니라 숫자였고, char 하나에 이 숫자를 담아 처리했습니다.이 구조는 영문 환경에서는 매우 단순하고 효율적이었습니다. 2. ANSI와 글로벌 문자.. 2026. 1. 4.
const 는 어디에 위치하느냐에 따라 의미가 달라집니다 1. 기본 개념C++ 에서 const 는 값을 고정할 때 사용됩니다.const int x = 10; 여기서 x 는 고정이므로 x 는 10 이 아닌 다른 값을 가질 수 없습니다.x = 11; 이것은 컴파일 오류를 일으키고, 대부분 여기까지는 자연스럽게 받아들입니다. 2. const 의 진짜 의미C++ 에서 const 는 일반적으로 바로 다음에 오는 대상을 고정시킨다는 의미로 해석해야 합니다. 그리고 이 사실을 깨닫는 것은 굉장히 중요합니다. 2-1. 기본 타입에서의 const먼저 가장 단순한 경우부터 보겠습니다.int const x = 10; 이 코드는 말 그대로 x 라는 값 자체를 고정시킵니다.이후에는 어떤 경우에도 x 에 다른 값을 대입할 수 없습니다.보통은 앞에서 보신 것 처럼, 아래와 같은 형태를 .. 2026. 1. 2.
헤더(.h)와 소스(.cpp)를 분리하는 이유 C++에서 헤더(.h)와 소스(.cpp)를 분리하는 이유를 한마디로 정리하면 컴파일 시간 비용을 줄이기 위해서입니다.다른 객체를 사용하기 위해 컴파일러가 알아야 할 것은 그 객체의 타입 정보입니다.객체의 내부 구현은 다른 cpp 파일 입장에서는 알 필요가 없습니다.따라서 컴파일에 필요한 타입 정보만 헤더 파일에 두고, 구현 내용은 cpp 파일로 분리하면 이 헤더 파일을 포함한 다른 소스 파일을 컴파일 할 때 해당 객체의 구현 코드를 함께 처리하지 않아도 됩니다.그 결과, 처리해야 할 코드량이 줄어들면서 전체 컴파일에 낭비되는 시간이 감소하게 됩니다.1. heaer 와 cpp 의 코드 분리 Player.h (타입 정보) #pragma onceclass Player{ public : void M.. 2025. 12. 27.
언리얼 엔진의 기본 상속 구조 Unreal Engine 의 기본 상속 구조는 아래와 같습니다. class AActor;class APawn : public AActor{ // 조종 가능한 객체};class ACharacter : public APawn{ // 보행 생명체 전용 클래스 // CharacterMovementComponent 포함}; • AActor | | -- APawn | | -- ACharacter 1. AActorAActor는 월드에 존재할 수 있는 모든 객체의 최상위 기본 클래스입니다.AActor의 주요 특징은 다음과 같습니다. • 월드에 배치될 수 있습니다. • 위치, 회전, 스케일 정보를 가집니다. • 컴포넌트를 부착할 수 있습니다. • BeginP.. 2025. 12. 27.
왜 언리얼 엔진의 클래스 등록 절차는 복잡할까? 유니티에 비해 언리얼은 클래스 등록 절차가 다소 시간이 걸리고 복잡해 보입니다.이것은 언리얼 자체의 문제라기 보다는 지원하는 언어가 C++ 이라는 보다 근본적인 이유에 있습니다. 1. C# 과 C++ 의 근본적인 차이C# 과 C++의 가장 큰 차이는 런타임에 클래스 정보를 가져올 수 있느냐의 차이입니다.용어로는 리플렉션이라고 하는데 C# 은 런타임에 리플렉션을 지원하는 언어입니다. 쉽게 설명하면, 프로그램이 실행 중일 때, 클래스 이름, 멤버 변수, 함수 정보 같은 타입 정보를 런타임에서 확인할 수 있다는 의미입니다. 반면 C++은 런타임에 클래스 정보를 조회할 수 없는 언어입니다. 언어 차원에서 리플렉션을 지원하지 않기 때문입니다. 따라서 프로그램이 실행된 이후에는 이 클래스가 어떤 멤버를 가지고 있.. 2025. 12. 27.
프로그래밍 언어란 무엇인가? 컴퓨터는 인간의 언어를 이해하지 못합니다.컴퓨터가 실제로 이해할 수 있는 것은 전기 신호, 즉 0과 1로 이루어진 숫자뿐입니다. 01010101 11100010 … 컴퓨터는 이런 형태의 명령만을 직접 처리할 수 있습니다.하지만 사람에게 이런 숫자는 읽기도 어렵고, 어떤 의미인지 파악하는 것도 거의 불가능합니다. 기계어초기 컴퓨터 시대에는 사람이 직접 0과 1을 사용해 프로그램을 작성하기도 했습니다. 이것을 기계어라고 합니다. 하지만 프로그램의 크기가 조금만 커져도 실수가 급격히 늘어났고, 수정이나 유지보수는 사실상 불가능에 가까웠습니다. 이 문제를 해결하기 위해 사람이 이해할 수 있는 형태의 언어가 필요해졌고, 그 결과 등장한 것이 프로그래밍 언어입니다. 프로그래밍 언어프로그래밍 언어는 사람이 읽고 쓰기.. 2025. 12. 21.