C++ 인라인 함수는 일반적으로 클래스와 함께 사용되는 강력한 개념입니다. 함수가 인라인이면 컴파일러는 컴파일 시간에 함수가 호출되는 각 지점에 해당 함수의 코드 복사본을 배치합니다.
인라인 함수를 변경하면 컴파일러가 모든 코드를 다시 한 번 교체해야 하므로 함수의 모든 클라이언트를 다시 컴파일해야 할 수 있습니다. 그렇지 않으면 이전 기능이 계속 사용됩니다.
함수를 인라인하려면 키워드 inline을 함수 이름 앞에 놓고 함수를 호출하기 전에 함수를 정의하십시오. 컴파일러는 정의된 함수가 라인 이상인 경우 인라인 한정자를 무시할 수 있습니다.
클래스 정의의 함수 정의는 인라인 지정자를 사용하지 않더라도 인라인 함수 정의입니다.
다음은 인라인 함수를 사용하여 최대 두 개의 숫자를 반환하는 예입니다 -
예시
#include <iostream> using namespace std; inline int Max(int x, int y) { return (x > y)? x : y; } // Main function for the program int main() { cout << "Max (20,10): " << Max(20,10) << endl; cout << "Max (0,200): " << Max(0,200) << endl; cout << "Max (100,1010): " << Max(100,1010) << endl; return 0; }
출력
Max (20,10): 20 Max (0,200): 200 Max (100,1010): 1010
이제 코드에서 인라인 함수를 사용하면 어떤 이점이 있는지 살펴보겠습니다.
-
여기서 함수 호출 오버헤드가 발생하지 않습니다.
-
함수가 호출될 때 스택에 있는 푸시 및 팝 변수의 오버헤드를 저장합니다.
-
함수에서 반환 호출의 오버 헤드를 저장합니다.
-
하나의 인라인 함수가 생성되면 컴파일러는 함수 본문에 대해 컨텍스트별 최적화를 수행할 수 있습니다. 이러한 종류의 최적화는 일반 기능에 대해 수행되지 않습니다.
-
작은 인라인 함수를 사용하면 임베디드 시스템에 유용할 수 있습니다. 인라인은 함수 호출 프리앰블 및 반환보다 적은 코드를 생성할 수 있기 때문입니다.