컴파일 과정
-
pragma once는 만능이 아니다개발/C·C++ 2019. 9. 17. 21:33
pragma once 전처리기는 인클루드가 수행될 때 반복되는 걸 막는 기능을 할 뿐이다. pragma once를 사용했는데도 비주얼 스튜디오에서 LNK2005 오류가 발생하는 이유다. 소스코드의 빌드는 크게 세 가지 과정을 거친다. 전처리, 컴파일, 링킹으로 나눌 수 있는데, 전처리 과정에서는 소스 파일(cpp)에 있는 pragma, include, define 등의 지시자를 처리한다. 전처리 과정에서 문제가 없었으면 컴파일러는 전처리기기가 모두 코드로 대체된 순수한 C++ 소스 코드를 파싱해 어셈블리 코드로 만든다. 그다음에 기계 코드로 번역해 바이너리 파일을 만드는데 이것이 오브젝트 파일이다(.obj). 각각의 소스 코드 별로 독립적으로 컴파일이 완료되면 각각의 오브젝트 파일이 생성된다. 마지막으로..