C와 C++을 다루어보면서 알게된 사실이 있다.
#include<[ ].h> #include<[ ]> 여기의 [ ]이 부분을 string이라 한다면(이렇게 쓰는 이유는 string카테고리가 이미 있다)
#include<string.h>와 같은 형식은 보통 C언어에서 볼 수 있고, #include<string>와 같은 형식은 보통 C++언어에서 볼 수 있다.
그래서 include 뒤에 붙는 string 뒤에 .h가 있는가 없는가로 헤더파일이 C에서 쓰이는 것인지 C++에서 쓰이는 것인지 알 수 있다.
C++에서는 C 스타일 헤더를 네임스페이스에 맞게 변경한 버전도 제공한다.
예로 기능은 거의 같지만 #include<stdio.h>와 #include<cstdio>의 경우 cstdio의 경우 앞에 std::를 써야하지만 말이다.(생략가능)
#include<cstdio>
int main() {
std::printf("%d", 10);
}
#include<stdio.h>
int main() {
std::printf("%d", 10);
}
//error, C2039 'printf': 'std'의 멤버가 아닙니다.
이렇게 된 이유는 C언어의 경우 절차 지향 프로그래밍으로, C 표준 라이브러리의 헤더 파일들은 주로 기능별로 나뉘어 있으며, 파일 이름이 .h 확장자를 가진다.
C++언어의 경우 C를 기반으로 하면서도 객체지향 프로그래밍과 추상화를 강조하기에 기능을 모듈화하고 추상화하기 위해 클래스, 네임스페이스등을 도입했다.
이에 따라 헤더 파일 이름에도 .h를 생략하고 C++ 표준 라이브러리의 새로운 기능을 담은 헤더들은 확장자 없이 사용한다.
물론 C++도 과거에는 <iostream.h>, <fstream.h>와 같이 .h를 사용했지만 지금은 그렇지 않다.
C 헤더파일=.h 有 , C++헤더파일=.h 無 이 규칙이 위반되는 경우도 가끔은 있으니 주의하자.
'coding Tips & Tricks > C\C++' 카테고리의 다른 글
C/C++) Visual Studio 중단점 사용하기 (0) | 2024.12.06 |
---|---|
C/C++) Tips & Tricks 1.변수 선언 (3) | 2024.11.06 |