Share via


인라인 함수

inline 키워드는 컴파일러에게 모든 함수 호출 건에 대해 함수 정의 내에서 코드를 대체하라고 말하는 함수 지정자입니다.

설명

인라인 코드는 컴파일러의 판단에 따라 대체됩니다. 예를 들어, 컴파일러는 함수가 주소를 가져온 경우나 인라인처리하기 너무 클 경우에는 함수를 인라인처리하지 않습니다. 컴파일러가 헤더 파일에 정의된 함수를 인라인처리하지 않으면 링커가 ODR(유일 정의 규칙) 위반을 회피하도록 표시됩니다.

함수를 인라인화 후보로 고려되도록 하려면 반환 형식 및 매개 변수 형식을 선언하는 서명과 함께 새 스타일 함수 정의를 사용해야 합니다.

이 양식을 사용하여 인라인 함수를 지정합니다.

inlinefunction-definition

인라인 함수는 동등한 함수 호출보다 더 빠르고 때로는 더 작은 코드를 생성합니다.

  • 인라인 함수는 인수 및 반환 값에 대한 스택을 준비하는 데 필요한 시간과 함수 호출의 점프 및 반환을 실행하는 시간을 절약합니다.

  • 심지어 여러번 반복되는 경우에도 3줄 이하의 작은 인라인 함수는 컴파일러가 인수 및 반환 값을 처리하는 코드를 생성하지 않으므로 동등한 함수 호출보다 적은 코드를 만듭니다.

  • 컴파일러는 일반 함수에서 사용할 수 없는 방식으로 인라인으로 생성된 함수를 최적화할 수 있습니다. 일반적으로 컴파일러는 서로 다른 프로시저 간에 최적화를 수행하지 않습니다.

inline을 사용하는 함수와 인라인 어셈블러 코드를 혼동하지 마세요. 인라인 어셈블러에 대한 자세한 내용은 인라인 어셈블러를 참조하세요.

Microsoft 전용

Microsoft는 컴파일러에게 모든 함수 호출 건에 대해 함수 정의 내에서 코드를 대체하라고 말하는 __inline__forceinline 키워드도 지원합니다. __inline 키워드는 inline의 동의어입니다. __forceinline 키워드는 함수의 인라인 처리 여부에 대한 추론을 완화하도록 컴파일러에 지시하지만, 함수가 인라인 처리된다고 보장하지는 않습니다.

이전 버전과의 호환성을 위해 _inline_forceinline은 각각 __inline__forceinline의 동의어입니다. 단 컴파일러 옵션 /Za(언어 확장 사용 안 함)가 지정된 경우는 예외입니다.

Microsoft 전용 종료

참조

inline, __inline, __forceinline