string 헤더파일을 include 하지 않아도
string 클래스와 멤버함수들까지 에러없이 컴파일 되고 실행이 잘 될 때가 있다. 그 이유가 뭘까?
1. 다른 표준 라이브러리 헤더들 중 하나가 <string> 헤더를 내부적으로 포함하고 있는 경우
<iostream> 헤더는 <string> 헤더를 포함하고 있어서 <string> 헤더를 포함시키지 않아도 string 클래스의 사용이 가능하다. 그 밖에도 다른 표준 라이브러리 헤더들 중 하나가 내부적으로 <string> 헤더를 포함하고 있어 사용이 가능할 수 있다.
2. 컴파일러 자체적으로 표준 라이브러리 사용을 제공하는 경우
컴파일러가 기본적으로 C++ 표준 라이브러리를 사용하는 경우, 명시적으로 <string> 헤더를 포함시키지 않아도 사용이 가능하다. 하지만, 다른 환경, 다른 컴파일러 등에서는 정상적으로 동작하지 않을 수도 있으며, 암시적으로 다른 헤더의 포함에 의존하는 경우도 마찬가지이므로, 명시적으로 사용할 헤더를 포함시키는 것이 좋다.
'언어 > C++' 카테고리의 다른 글
[C++] 오류 : E0146) 이니셜라이저 값이 너무 많습니다. (0) | 2024.07.15 |
---|---|
[C++] 오류 : c1083) 컴파일러 중간 파일을 열 수 없습니다. (0) | 2024.07.04 |
[C++] vector 최댓값, 최솟값 구하기 (+ 인덱스까지) (0) | 2024.01.26 |
[C++] vector 정렬 (오름차순, 내림차순, 마음대로) (0) | 2024.01.26 |
[C++] 오류 : vector subscript out of range (0) | 2024.01.25 |