5.2.8. Extern 인라인 함수

ISO C++ 표준에 따라 인라인 함수는 사용 위치에 관계 없이 정의되어야 합니다. C++ 컴파일러는 인라인 함수의 여러 라인 외부 복사본이 충돌하는 것을 방지하기 위해 공통 섹션에서 라인 외부 extern 함수를 내보냅니다.

라인 외부 인라인 함수

컴파일러는 다음과 같은 경우 인라인 함수를 라인 외부로 내보냅니다.

  • 다음과 같이 함수의 주소가 사용된 경우

    inline int g()
    {
        return 1;
    }
    int (*fp)() = &g;
    
  • 함수가 인라인될 수 없는 함수(재귀 함수)인 경우

    inline int g()
    {
        return g();
    }
    
  • 컴파일러가 사용하는 발견적 방법에서 함수를 인라인하지 않는 것이 좋다고 결정한 경우. 이 발견적 방법은 -Ospace-Otime의 영향을 받습니다. -Otime을 사용할 경우 컴파일러가 더 많은 함수를 인라인합니다. __forceinline을 사용하여 함수를 선언하면 이 발견적 방법을 재정의할 수 있습니다. 예를 들면 다음과 같습니다.

    __forceinline int g()
    {
        return 1;
    }
    

    자세한 내용은 --forceinline을 참조하십시오.

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential