2022. 6. 24. 13:21ㆍ♣ C++
이번 포스팅에선 인라인 함수와 매크로 함수에 대해 알아보도록 하겠습니다.
인라인 함수: 모든 코드를 호출된 자리에서 바로 삽입해서 연산을 진행합니다.
매크로 함수: #define 선행처리 지시문에 함수를 정의하여 동작합니다.
개발 환경 : VSCode, Windows 10
기본 개발 세팅은 다음과 같습니다.
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
int main()
{
return 0;
}
📌 인라인 함수
인라인 함수가 필요한 이유가 뭘까요?
그 이유는 함수 호출 과정에 있습니다. 본래 함수 호출은 다음과 같은 과정을 거칩니다.
(1) 함수 호출
(2) 스택에 매개변수+반환 주소값 저장
(3) 프로그램 제어가 함수 위치로 날아와 지역 변수 저장
(4) 코드 실행
(5) 반환 값 넘기고 다시 본문으로 이동
(6) 함수 호출 정보 제거
오래걸리는 함수라면 이 과정들이 딱히 크게 느껴지지 않습니다. 하지만 아주 짧은 코드라면 이 과정조차 시간 낭비가 될 것입니다. 위의 복잡한 과정 없이, 해당 함수의 모든 코드를 호출된 자리에서 바로 삽입하는 것이 인라인 함수입니다.
인라인 함수는 다음과 같이 정의&선언 합니다.
inline 타입 함수이름(인수){return};
inline int Add(int a, int b){return a + b;};
인라인 함수는 원형, 정의를 딱히 구분하지 않습니다. 간단하기에 한번에 바로 선언해줍니다.
인라인 함수 활용 예시입니다.
inline int Add(int a, int b){return a + b;};
// main() 함수 본문
int main()
{
int a = 30, b = 40;
cout << "Add's result : " << Add(a, b) << endl;
}
함수를 활용하는 방법 자체는 다른 함수들과 다를바 없습니다.
결과
Add's result : 70
📌 매크로 함수
매크로 함수는 #define 선행처리 지시문에 인수로 함수를 전달하여 동작합니다.
#define 함수이름(인수)(함수 기능 정의)
#define Add(X)((X)+(X))
매크로 함수는 인수들을 모두 괄호로 덮어줘야 합니다.
만약 덮지 않을 경우, 오류들이 발생합니다.
매크로 함수 활용 코드입니다.
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
#define Add(X)((X)+(X))
// main() 함수 본문
int main()
{
int a = 30, b = 40;
cout << "Add's result : " << Add(a) << endl;
}
#define 선행처리 지시문에 함수를 정의하고, main() 함수에서 그대로 쓴 것을 볼 수 있습니다.
결과
Add's result : 60
지금까지 인라인 함수와 매크로 함수에 대해 알아보았습니다.
다음 포스팅에선 함수 범위에 대해 알아보겠습니다.
고생하셨습니다.
'♣ C++' 카테고리의 다른 글
[C++] 네임스페이스(namespace) 개념 및 코드 (0) | 2022.06.28 |
---|---|
[C++] 자유 변수, 레지스터 변수, 정적 변수 ft. 유효 범위 (0) | 2022.06.27 |
[C++] 함수 Basic - 참조자, 디폴트 인수, 오버로딩 (0) | 2022.06.24 |
[C++] 함수 포인터 표기를 단순화하는 방법 (0) | 2022.06.23 |
[C++] 함수 Basic - 정의, 인수 전달, 포인터 (0) | 2022.06.23 |