1. 언리얼의 경우
1) 언리얼에서의 순환참조 문제가 발생하는 상황
- 언리얼에서 헤더 파일끼리 서로 include하면 순환 참조 오류 발생
ex) A.h에서 #include "B.h" / B.h에서 #include "A.h"

이런 식의 오류가 발생함
2) 원인
- C++의 컴파일러: 컴파일 과정에서 #include 가 적힌 위치에 해당 파일의 내용을 그대로 복붙
- 언리얼(C++)의 #include: 해당 위치에 include 한 파일의 내용을 전부 붙여 넣는 효과
: 구조체나 클래스의 정의를 내리기 전에 정의를 또 요구하기 때문에 컴파일러의 타입 해결 실패
3) 해결방안
- 전방선언 사용
: 헤더에서 이름만 먼저 알려줌 ex) B.h에서 class A; 로 전방선언 사용
: 실제 include는 cpp 파일에서 실행
2. 유니티의 경우
1) 유니티에서 코드를 작성할 때 서로 참조해도 오류가 나지 않음
ex) A.cs에서 B.cs를, B.cs에서 A.cs를 참조해도 상관 없음
2) 원인
- C#의 컴파일러: 처음부터 전체 프로젝트의 모든 타입 정보를 알고 있음
- 유니티(C#)의 using
: 네임 스페이스 안의 타입을 참조할 수 있게 해주는 문법적 단축어(alias)
728x90