inline함수
-> 프로그램 코드라인 안으로 들어가 버린 함수
1. 매크로함수
장점
- 일반적인 함수에 비해 실행속도의 이점이 있다.
- 단순 치환만 해주므로 인수타입을 신경쓰지 않아도 된다.
- 여러개의 명령문을 동시에 포함할 수 있다.
단점
- 정의하기 어렵다. 복작한 함수를 매크로 형태로 정의하는데 한계가 있다.
1 2 3 4 5 6 7 | #include <iostream> #define SQUARE(X) ((X)*(X)) int main(void) { std::cout<< SQUARE(5) <<std::endl; } | cs |
위 코드는 SQUARE(5) => ((5)*(5))의 형태로 치환된다.
위와 같이 함수의 몸체부분이 함수호출 문장을 완전히 대체했을 때
'함수가 인라인화 되었다'라고 표현한다.
매크로함수는 성능에 이점이 있으나 정의하기가 복잡다는 단점이 있다.
이러한 단점을 제거한 것이 C++ 인라인 함수이다.
2. C++기반의 인라인 함수 정의
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <iostream> inline int SQUARE(int x) { return x*x } int main(void) { std::cout<< SQUARE(5) <<std::endl; std::cout<< SQUARE(12) <<std::endl; } | cs |
-> SQUEARE함수는 inline으로 선언해서 인라인 함수로 사용하고 있다.
이는 10~11행에서 몸체부분이 호출문을 대체하게 된다.
* 매크로를 이용한 함수의 인라인화는 전처리기에 의해서 처리되지만,
키워드 inline을 이용한 함수의 인라인화는 컴파일러에 의해서 처리가 된다.
따라서 컴파일러는 함수의 인라인화가 오히려 성능에 해가 된다고 판단할 경우,
이 키워드를 무시해버리기도 한다.
또한 컴파일러는 필요한 경우 일부 함수를 임의로 인라인 처리하기도 한다.
[출처]
윤성우의 열혈 C++ 프로그래밍 01-4 인라인(inline)함수
http://tcpschool.com/c/c_prepro_macroFunc
728x90
'Software Development > C, C++' 카테고리의 다른 글
[C++] 참조자(Reference)의 이해 (0) | 2018.12.09 |
---|---|
[C++] namespace & using (0) | 2018.12.02 |
[C++] 함수 오버로딩과 매개변수의 디폴트 값 (0) | 2018.11.25 |
[C++] cin, cout을 이용한 입출력 (0) | 2018.11.25 |
C언어로 게임만들기 - 5. 첫번째 게임_5)코드정리 (3) | 2017.03.28 |