
c를 더하고 .h를 빼라.

헤더파일의 확장자인 .h를 생략하고 앞에 c를 붙이면 C언어에 대응하는 C++의 헤더파일 이름이 된다.
따라서 쉽게 C언어의 함수를 C++에서도 호출할 수 있다. 다음 예제를 살펴보자.
StdCPPFunc.cpp
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
int main(void) {
char str1[] = "Result";
char str2[30];
strcpy(str2, str1);
printf("%s: %f \n", str1, sin(0.14));
printf("%s: %f \n", str2, abs(-1.25));
return 0;
}
Result: 0.139543
Result: 1.250000
물론 stdio.h와 같은 C언어의 헤더파일을 이용해도 되지만, 가급적 C++의 헤더를 기반으로 예제를 작성하자.
C++의 헤더를 선언해야 하는 이유
C++ 표준 라이브러리가 재공하는 함수들과 C 표준 라이브러리가 제공하는 함수들이 완전히 일치하는 것도 아니다. 예를 들어서 위 예제에서 호출한바 있는 abs함수는 C 표준에서 다음과 같이 선언되어 있다.
int abs(int num);
반면, C++에서는 다음과 같이 오버로딩 되어있다.
long abs(long num);
float abs(float num);
double abs(double num);
long double abs(long double abs);
C++에서는 함수 오버로딩이 가능하기 때문에 자료형에 따라서 함수의 이름을 달리해서 정의하지 않고, 보다 사용하기 편하도록 함수를 오버로딩 해 놓은 것이다.
이렇듯 C++ 문법을 기반으로 개선된 형태로 라이브러리가 구성되어 있으므로, 가급적 C++의 표준헤더를 이용해서 함수를 호출하는 것이 좋다.