목록

2019년 6월 19일 수요일

[C/C++] 인라인 키워드. inline, __inline, __forceinline


인라인 함수는 호출이 일어나는 위치에 인라인 함수의 실행코드를 복사하여 실행해주는 함수입니다.

인라인 함수의 장점은 일반 함수가 호출 또는 복귀할 때 필요한 명령을 줄이므로 좀 더 빠릅니다.

단점으로는 컴파일시 호출된 지점으로 코드가 복사되므로 실행 프로그램의 크기가 커집니다.

단,  함수를 인라인 화 하려면 호출하는 곳에서 해당 함수의 내용까지 모두 알고 있어야합니다. 때문에 인라인 할 함수는 헤더파일에 정의까지 다 작성하는 경우가 흔합니다.

인라인 함수에 사용되는 키워드는 다음과 같습니다.


1. inline
해당 키워드가 붙은 함수는 컴파일러의 판단에 따라 인라인 함수가 될지 결정됩니다.
함수의 내용이 거의 없는 경우 인라인 함수가 될 가능성이 높아집니다.
즉, 이 키워드가 붙어도 반드시 인라인 함수가 되는 것은 아니라는것입니다.
해당 키워드는 cpp 에서 사용 가능합니다.

2. _inline, __inline
위 inline과 동일하되, C와 C++ 모두 사용 가능합니다.
MSVC, IBM컴파일러 비표준입니다. 다른 컴파일러에서 사용 불가능 할 수 있습니다.

3. __forceinline
해당 키워드가 붙은 함수는 인라인 함수가 될수 있다면 반드시 인라인 함수가 됩니다.
인라인 함수가 될 수 없는 경우는 virtual 함수이거나 재귀함수이거나 함수 포인터를 통한 호출이거나 등.
C와 C++ 모두 사용 가능합니다.
MSVC비표준입니다. 다른 컴파일러에서 사용 불가능 할 수 있습니다.
gcc에서는 __attribute__((allways_inline)) 을 사용합니다.


사용 방식
키워드 함수형식

inline void A(){}
__forceinline void B();
멤버 함수에서도 사용 가능.


댓글 없음:

댓글 쓰기

목록