반응형
인라임 함수가 뭘까?
일반함수 : 사용시 함수 호출
인라인 함수 : 컴파일러 수행 단계에서 이루어진다, - 컴파일러가 함수를 사용할때 코드를 복사해서 사용해
매크로 함수 : 선행처리기 수행 단계에서 이루어진다, - 또한 계산식이 다르고 복잡하여 힘들어
함수 호출 과정이 없어서 속도가 조금더 빠르다
why?
왜 복사보다 호출이 느리지? 라고 생각할수있어
하지만 함수가 호출 되는 과정은 생각보다 복잡해
그렇기 때문에 간단한 식은 오히려 복사하는게 빠른거지
그래서 간단한 식을 인라인 함수로 사용하는거야
우선 인라인 함수의 기본적인 사용법은
inline 자료형 이름(매개변수){ 내용 } 이야
//인라인함수
inline int SUM_INLINE(int a, int b) {
return a + b;
}
int main()
{
int INLINE_NUM = SUM_INLINE(5, 5);
std::cout << INLINE_NUM << std::endl;//10입니다.
}
코드가 컴파일되면
//인라인함수
inline int SUM_INLINE(int a, int b) {
return a + b;
}
int main()
{
int INLINE_NUM = inline int SUM_INLINE(5, 5){ return 5 + 5 }
std::cout << INLINE_NUM << std::endl;//10입니다.
}
이처럼 함수가 실행되는 부분에 복제되어 작동하지!
주의할점
하지만 인라인 함수를 사용하면 프로그램 속도는 빨라져도 남용하게 된다면
복제되는 것이기 때문에 프로그램의 크기가 커저버려
재미있는점은 컴파일러판단해서 인라인화를 안할수도 있고,
선언을 안해도 자동으로 인라인화를 하는 경우도있어
visual studio 의 경우 구성속성 -> c/c++ -> 최적화 -> 인라인 함수 확장[...]
에서 설정을 해줄수도 있어 (사용한함처럼) 기본값은 적합한 것 모두 확장이야.
'언어 > C++' 카테고리의 다른 글
c++ std::function 사용하기 (0) | 2023.01.10 |
---|---|
함수 포인터! (Function Pointer)! (0) | 2021.07.13 |
네임스페이스 (9) | 2021.05.18 |
bit연산! 또는 bit Flag (0) | 2021.05.05 |
call by reference/call by value/call by address (0) | 2021.05.03 |