2015-01-28 13 views
1

나는이 같은 inline 기능이 있습니다GCC에서 리터럴 속성을 사용하여 인라인 C 함수를 컴파일하는 방법은 무엇입니까?

inline void func_1 (int a) 
{ 
    if(a==1) 
    { 
     other_func1(); 
    } 
    else 
    { 
     other_func2(); 
    } 
} 

및 I는 다음과 같이 메인에서 사용

int main() 
{ 
    func1(1); 
    func1(42); 

    return 0; 
} 

내가 GCC를 사용

, 내 생각,이 같은 컴파일 된 코드 모양 ("소스 수준 "이라고 함) :

int main() 
{ 
    other_func1() 
    other_func2(); 

    return 0; 
} 

사실입니까?

+1

어떤 컴파일러가 생성되는지 잘 모르겠 으면 언제나'-S' (가독성을 위해'-fverbose-asm')를 사용하고 생성 된 어셈블리를 검사 할 수 있습니다. 컴파일러 옵션 및 최적화 수준에 따라 결과가 다를 수 있습니다. – keltar

답변

2

예, 일반적으로 gcc는 컴파일 타임에 분기를 평가할 수있을 때 인라인 함수에서 데드 코드를 최적화합니다. 이 사용법을 많이 사용하여 다른 유스 케이스에 최적화 된 코드를 생성 할 수 있습니다. C++의 템플릿 인스턴스화와 비슷합니다.