일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 회귀
- 분류
- 딥러닝
- supervised learning
- 티스토리챌린지
- deep learning
- 해커톤
- 지도학습
- Machine Learning
- LG
- GPT-4
- 머신러닝
- LLM
- OpenAI
- ChatGPT
- LG Aimers
- LG Aimers 4th
- 오블완
- gpt
- regression
- Classification
- AI
- PCA
Archives
- Today
- Total
SYDev
C++ Chapter 02-6 : C++에서 C언어의 표준함수 호출하기 본문
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
'Programming Lang > C++' 카테고리의 다른 글
C++ Chapter 03-2 : 클래스(Class)와 객체(Object)(1) (0) | 2023.07.12 |
---|---|
C++ Chapter 03-1 : C++에서의 구조체 (0) | 2023.07.12 |
C++ Chapter 02-5 : malloc & free를 대신하는 new & delete (0) | 2023.07.11 |
C++ Chapter 02-4 : 함수에서의 참조자(Reference)(2) (0) | 2023.07.11 |
C++ Chapter 02-4 : 함수에서의 참조자(Reference)(1) (1) | 2023.07.10 |