본문 바로가기
IT/C++(CPP)

CPP 초급 강좌 3. C++ 해더 파일에 대해서 header files

by 신림83 2020. 9. 25.
반응형

CPP 초급 강좌 3. C++ 해더 파일에 대해서 header files

c에서 cpp로 오면서 변경, 추가된 헤더 관련 이야기를 해보겠습니다.

이런 규칙으로 변경되었다 정도로 봐주세요

 

먼저 아래 예제를 보면

예제 1.

min 을 사용하기 위해서 2번 라인에 #include <algorithm> 을 하용하였습니다. 그리고 printf 를 사용하기 위해서 3번 라인의 #include <stdio.h>를 사용하였습니다. 두 include의 차이점은 확장자의 유무입니다. 

 

C++헤더 파일을 특징 

헤더 파일의 확장자를 사용하지 않습니다. .h~~ 등등

 

그러면 3번 라인 #include <stdio.h> 이건 뭐죠 라고 생각하실수 있죠?

 

c++ 용 해더 파일이 따로 존재합니다.

stdio.h 에서 .h 확장자를 제거하고 앞에 c를 붙입니다.(c언어에서 사용했다는 의미) cstdio

#include <cstdio> 를 사용하 지면 됩니다.

 

유사한 법칙이 적용되는 헤더파일이 많습니다.

cstdio

예제 2.

3번 라인의 #include <cstdio> 역시 std 네임 스페이스를 활용합니다. 관련하여는 이전 강좌 CPP 초급 강좌 2. std namespace 를 보시면 아실 수 있습니다. 7번 라인의 std::printf("test"); 코드가 명시적으로 cstdio의 기능을 호출 합니다.

 

 하지만 대부분의 컴파일러에서도 8번 라인은 여전히 동작합니다?? 이유는 대부분의 컴파일러가 global namespace에도 printf를 배치시켜두었기 때문입니다. 환경에 따라 정확한 동작은 보장 못합니다. 

 

네임스페이스에 특정함수를 호출하면, 글로벌 스페이스 함수를 땡겨쓰게 하려면?

 

 가정해보겠습니다. 여러분이 큰 라이브러리를 제작하여, 기존의 글로벌 네임스페이스나 다른 네임스페이스에 기능들을 감싸고 제공한다고 합시다.

 

 이런 경우 작업량이 많아서 중간 배포를 하려고 하는데, 아직 나의 기능을 아직 다 완성을 못했다고 할 시, 일단 나의 네임스페이스에서 해당 기능이 호출은 가능하게 하되, 쉽게 타 네임스페이스 기능을 불러 쓸 수 있게 할 수 있습니다.

 

예제 3.

 라인 6번과 같이 표현하면 글로벌 스페이스에 구현된 2번라인 void fTest() {} 함수를 호출하게 됩니다. 조금 더 머리를 써보면 다른 네임스페이스 연결도 가능하겠죠?

 

 그리고 다음 버전 배포시 내가 원하는 기능을 구현하여 추가 배포하면 되겠죠.

반응형

댓글