-
인라인 함수Programming Language/C++ 2017. 8. 8. 22:19
(2014년에 네이버 블로그에서 작성했던 글을 티스토리로 옮기며 이관했습니다)
인라인 함수는 속도 감량에 매우 큰 도움이 됩니다.
인라인 함수는 보통 함수를 호출할 경우 눈에 보이는 것처럼 그 함수에 가서 코드를 실행하는 것이 아니라 해당 코드에서 바로 함수 내부의 코드를 실행시키기 때문에 매개변수를 복사하거나, 다음 코드로 가게 하는 흐름을 생략해 주기 때문이죠.
그럼 "모든 함수를 인라인 함수로 선언해 주면 되겠다." 라는 생각이 분명히 들게 됩니다.
하지만 그럴 수는 없습니다.
프로그래머가 인라인 함수를 선언했다고 해도 그 함수가 인라인 함수가 되느냐 안 되느냐는 컴파일러가 결정하기 때문이죠.
인라인 함수가 안 되는 경우는 다음과 같습니다
1. 재귀함수
2. 다른 코드에서 함수의 주소를 가져와서 호출하는 경우
인라인 함수의 사용법은 함수의 반환 자료형 앞에 inline을 붙이는 것이 전부입니다.
또는 클래스 내부에 멤버함수를 선언하는 것이죠.
다음은 인라인 함수의 예제 코드입니다.
123456789101112131415161718192021222324252627282930313233343536#include <iostream>#include <Windows.h>using namespace std;class cppclass{public:static int x, y;void iFunc(){char temp[25];sprintf(temp, "I'm inline Function!");MessageBoxEx(0, temp, "", MB_ICONINFORMATION, 0);}inline static int Calculator(){return x + y;}};int cppclass::x, cppclass::y;int main(){cout << "x input : ";cin >> cppclass::x;cout << "y input : ";cin >> cppclass::y;cout << "result is " << cppclass::Calculator() << endl;cppclass testclass;testclass.iFunc();return 0;}cs 'Programming Language > C++' 카테고리의 다른 글
[Win32 API] 윈도우 모니터 중간으로 위치 이동하기 (0) 2017.08.08 [Win32 API] 다이얼로그 아이콘 변경 (0) 2017.08.08 LRESULT / CALLBACK / WPARAM / LPARAM (0) 2017.07.09 __cdecl, __stdcall 차이점 (2) 2017.01.02 C++ 템플릿 클래스는 언제 생성될까? (0) 2016.12.10