2026/06/05 3

extern (외부 변수)

extern (외부 변수)현재 파일이 아닌 다른 파일에 존재하는 변수나 함수를 참조하기 위한 키워드외부 변수란?현재 파일의 코드 외에다른 파일에 존재하는 변수를 의미한다. 예)// A.cppint a = 10;// B.cppextern int a;B.cpp에서는 실제 변수는 없지만extern을 통해"어딘가에 존재하는 변수 a를 사용하겠다"라고 컴파일러에게 알려주는 것이다.사용 예제변수 정의// A.cppint a = 10;변수 참조// B.cppextern int a;void Func(){ a = 20;}문법적으로 아무 문제가 없다.extern의 동작 방식컴파일 단계extern int a;컴파일러는"어딘가에 int형 변수 a가 존재한다고 가정"하고 코드를 컴파일한다.따라서 실제 변수의 존재 여부를 ..

c++/기초 2026.06.05

분할 구조 (Header / Source File)

분할 구조 (Header / Source File)하나의 코드를 .h 파일과 .cpp 파일로 나누어 관리하는 방식일반적으로.h : 선언(Declaration).cpp : 구현(Definition)을 담당한다.장점코드 관리가 편해짐기능별로 파일을 분리할 수 있다.예)Player.hPlayer.cppMonster.hMonster.cppInventory.hInventory.cpp파일 역할이 명확해져 유지보수가 쉬워진다.협업 시 충돌 감소여러 사람이 동시에 작업할 때각자 다른 파일을 수정할 수 있다.예)A : Player.cpp 수정B : Inventory.cpp 수정Git 충돌이 줄어든다.재사용 가능헤더만 include 하면다른 코드에서도 쉽게 사용할 수 있다.예)#include "Player.h"컴파일 속도..

c++/기초 2026.06.05

nullptr

nullptr포인터 전용 null 값NULL의 문제점void func(int x);void func(int* x);func(NULL);NULL은 일반적으로 다음과 같이 정의되어 있다.#define NULL 0즉, NULL은 결국 정수 0이다.따라서void func(int);void func(int*);두 함수 모두 호출 후보가 된다.0 → int 변환 가능0 → int* 변환 가능컴파일러는 어떤 함수를 호출해야 하는지 결정할 수 없기 때문에 모호성(Ambiguity) 오류가 발생한다.nullptr 사용void func(int x);void func(int* x);func(nullptr);nullptr은 std::nullptr_t 타입을 가지는 특수한 값이다.포인터 타입으로만 변환 가능정수 타입으로는 변환..

c++/기초 2026.06.05