일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- SQL
- 프로그래머스
- 코딩교육봉사
- 스프링
- 코틀린
- 공부일지
- kotlin
- 시나공
- BFS
- 알고리즘
- 소프티어
- 백준알고리즘
- 코딩봉사
- softeer
- 파이썬
- 백준 알고리즘
- 1과목
- MYSQL
- programmers
- 회고
- SW봉사
- python
- 데이터베이스
- 백준
- java
- CJ UNIT
- 문제풀이
- 정보처리산업기사
- 자바
- C++
Archives
- Today
- Total
JIE0025
[C++] 매크로 함수와 인라인 함수 (macro, inline function) 본문
728x90
매크로 함수?
씨언어에서 아주 간단하게 정의하는 함수
#define 함수이름(인자이름) ( 리턴할 값 )
- 매크로함수는 자료형에 의존적이지 않다.
- 그러나 복잡한 return 값이 생길 경우 정의하기가 쉽지 않은 특징이 있다.
- 일반 함수보다 실행속도에서 이점이 있다.
- 전처리기에 의한 처리
#define SQUARE(x) ((x)*(x))
#define PIE 3.14
#define CIRCLE(x) ((PIE)*(x)) //매크로 함수
#include<iostream>
int main(){
//매크로 함수의 사용
cout << SQUARE(5) << endl;
cout << CIRCLE(2) << endl;
return 0;
}
인라인 함수 ?
C++에서 C언어의 매크로함수의 기능을 그대로 이어받지만 보통 정의하는 함수와 같이 선언하는 함수
매크로 함수의 어려운 정의방법을 개선 >> 일반 함수처럼 정의 가능 >> 실행속도의 장점은 그대로 가져옴.
- 실행속도 빠름
- 일반함수처럼 쉽게 정의 가능
- 컴파일러에 의한 처리 (컴파일러가 성능에 따라 알아서 판단 : 인라인 무시/처리하기도 함)
- 자료형에 의존적, 의존적이지 않은 인라인 함수를 만들려면 템플릿을 사용해야한다.
inline 반환형 함수이름(변수형 이름){
return 반환값
}
템플릿 : 자료형에 의존적이지 않게 코드를 작성하는 방법
- 함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 틀.
template <typename T>
템플릿을 활용한 함수의 정의
inline T Square(T x) {
return x * x;
}
템플릿 함수
#include <iostream>
#include <string>
template <class T1, class T2>
void print (T1 a, T2 b){
cout << "T1 : " << a << endl;
cout << "T2 : " << b << endl;
}
int main(void){
string s1 = "hello" ;
int num1 = 5;
print(s1, num1);
return 0;
}
인라인 + template
#include<iostream>
using namespace std;
inline int SQUARE(int x) {
return x * x;
}
// 자료형에 의존적
//자료형에 의존적이지 않게 코드 작성 : 템플릿
template <typename T>
inline T Square(T x) {
return x * x;
}
int main() {
//인라인 함수
cout << SQUARE(4) << endl;
cout << Square(3.1) << endl;
return 0;
}
'기타 학습 > Language' 카테고리의 다른 글
[C++] 이름공간 (namespace), 범위지정 연산자의 사용 (0) | 2022.05.06 |
---|---|
[C++] 매개변수 디폴트 값 (default vaule) (0) | 2022.05.06 |
[C++] 함수 오버로딩 (0) | 2022.05.06 |
[BOJ - 자료구조] 1927 번 : 최소 힙 ( C++) (0) | 2022.05.06 |
[C++] string::find, string::npos 단어 존재 여부 확인 (1) | 2022.05.05 |