오늘 회사에서 #pragma once때문에 컴파일 에러로 난리가 났어서 정리하는 글
난리가 났던 이유
1. 파일 A는 #pragma once 전처리기와 함께 파일B를 include 하고 있었음
2. (추정) 파일A를 간접적으로 참조하는 파일 C에서도 파일B를 include
3. (추정) #pragma once가 파일A의 include B를 날려버림
4. 컴파일에러가 났지만 비주얼스튜디오는 파일A가 아닌 파일B의 변수D를 원인으로 지목함
(파일A 전혀 지목X)
한 시간 정도... svn 업뎃 받은 모두는 아무 일도 할 수 없었다.
include를 전방선언으로 바꿔주니까 문제 해결!
Pragma once
docs.microsoft.com/en-us/cpp/preprocessor/once?view=msvc-160
(한국어버전은 너무 발번역)
once pragma
Learn more about: once pragma
docs.microsoft.com
en.wikipedia.org/wiki/Pragma_once
pragma once - Wikipedia
Preprocessor directive in C and C++ In the C and C++ programming languages, pragma once is a non-standard but widely supported preprocessor directive designed to cause the current source file to be included only once in a single compilation.[1] Thus, #prag
en.wikipedia.org
- 소스 코드 파일을 컴파일할 때 컴파일러에서 헤더 파일을 한 번만 포함 하도록 지정 합니다
- 주어진 컴파일에서 한 번만 정의될 수 있게 후속 포함을 무시한다.
- "multiple-include optimization".
- templates, 타입, 함수, object들이 코드에 한 개 이하로만 존재하도록 제한합니당
- 전처리기 기호
- high level 메커니즘이라서 컴파일 속도가 향상됨(#ifndef - #endif)에 비해
- 동일한 파일이 다른 디렉토리에서 다른 이름으로 발견될 수 있다(심볼릭링크, 하드링크) ????이게뭐지
- #include guard 라는 메크로로 방지할 수 있다는 것 같은데
'Unreal > 팁' 카테고리의 다른 글
| UE4) 모바일에서는 Hover이벤트 들어오지 않는다. (0) | 2022.09.23 |
|---|---|
| 데디에서 스폰 할 때 특정 클라에만 설정..? (0) | 2022.06.08 |
| Widget이 NativeTick() 돌지 않을 때 (0) | 2022.05.15 |
| Jam's Tip (0) | 2022.05.13 |
| 데디케이트 서버에서 스탯 관리(수정필요) (0) | 2021.04.16 |