Programming Lang/C++
C++ Chapter 02-6 : C++에서 C언어의 표준함수 호출하기
시데브
2023. 7. 11. 17:20
C++에서 C언어의 표준함수 호출
C언어의 라이브러리에 있는 함수들을 이용하기 위해서는 .h를 생략하고 앞에 c를 붙이면 된다.
#include <stdio.h> -> #include <cstdio>
#include <stdlib.h> -> #include <cstdlib>
#include <math.h> -> #include <cmath>
#include <string.h> -> #include <cstring>
이와 관련된 다음 예제를 살펴보자.
#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++의 헤더를 선언해야 하는 이유
우선 아래 예제를 살펴보자.
#include <stdio.h>
int main(void)
{
printf("Hello World!");
return 0;
}
C++에서 위와 같은 함수 호출을 허용하는 이유는 하위 버전과의 호환성(backwards compatibility)를 제공하기 위함으로 볼 수 있다.
그럼에도 C++의 헤더를 선언해야 하는 이유는 C언어 표준 라이브러리의 함수와 C++ 표준 라이브러리 함수가 완벽하게 일치하지는 않기 때문이다.
그 예시로 C언어에서의 abs함수와 C++에서의 abs 함수의 구조 차이를 알아보자.
int abs(int num);//C언어에서의 abs함수
long abs(long num);
float abs(float num);
double abs(double num);
long double abs(long double num);
// C++에서의 abs 함수
C++에서는 함수 오버로딩이 가능하다는 차이점으로 위와 같이 함수의 구조가 달라진다. 때문에 가급적이면 C++에서는 C++의 헤더를 선언하는 것이 좋다.
- 출처 : 윤성우, <윤성우의 열혈 C++ 프로그래밍>, 오렌지미디어, 2010.05.12
728x90
반응형