언어/C++
[C++] string 헤더파일을 include 하지 않아도 잘 실행되는 이유
study_memo
2024. 1. 28. 00:55
string 헤더파일을 include 하지 않아도
string 클래스와 멤버함수들까지 에러없이 컴파일 되고 실행이 잘 될 때가 있다. 그 이유가 뭘까?
1. 다른 표준 라이브러리 헤더들 중 하나가 <string> 헤더를 내부적으로 포함하고 있는 경우
<iostream> 헤더는 <string> 헤더를 포함하고 있어서 <string> 헤더를 포함시키지 않아도 string 클래스의 사용이 가능하다. 그 밖에도 다른 표준 라이브러리 헤더들 중 하나가 내부적으로 <string> 헤더를 포함하고 있어 사용이 가능할 수 있다.
2. 컴파일러 자체적으로 표준 라이브러리 사용을 제공하는 경우
컴파일러가 기본적으로 C++ 표준 라이브러리를 사용하는 경우, 명시적으로 <string> 헤더를 포함시키지 않아도 사용이 가능하다. 하지만, 다른 환경, 다른 컴파일러 등에서는 정상적으로 동작하지 않을 수도 있으며, 암시적으로 다른 헤더의 포함에 의존하는 경우도 마찬가지이므로, 명시적으로 사용할 헤더를 포함시키는 것이 좋다.