2012-09-19 4 views

답변

4

최소한 이식성이없는 호출을 인라인하도록 컴파일러에 선택적으로 지시 할 수 없습니다.

inline은 컴파일러에 대한 제안 일 뿐이므로 컴파일러는 호출 지점까지 인라인 함수 본문을 인라인하기위한 제안을 따르거나 따르지 않을 수 있지만 컴파일러에서 한 정의 규칙과 같은 일부 조건을 완화합니다. 그러한 기능을 위해서.

0

내가 요구 사항이 유용하지 않다 생각하고, 질문에 대한 대답은 : 제

그러나 매크로 사용하여 그 효과에 뭔가를 얻을 수 있습니다

#define f_inline do { int i = 1 + 2; } while(0) 

void f() { 
    f_inline; 
} 

이제 수를 f 코드를 강제로 적용하려면 f_inline;을 사용하십시오.

0

은 특히 인라인 함수가 전혀 호출하면 여부를 중요하지 않습니다. What does __inline__ mean ?을 참조하십시오. 필자는 인라인되지 않은 함수를 작성하고 컴파일러가 최적으로 인라인하는 방법을 결정하게합니다.

static inline int foo_inline(int a, int b) 
{ 
    /* ... */ 
} 

static int foo_noninline(int a, int b) 
{ 
    return foo_inline(a, b); 
} 
:
0

컴파일러는 무조건 inline 키워드의 사용 또는 비 사용을 수여하거나 GCC의 확장 __attribute__((__always_inline__))__attribute__(__noinline__))를 사용하는 경우, 당신은 간단한 래퍼 함수와 함께 당신이 원하는 것을 달성 할 수있는 경우

나는 inline 키워드로 작성했지만, 컴파일러는 보통 이것을 힌트로 취급하거나 심지어 무시하기 때문에 gcc 속성 버전을 원할 수도 있습니다.

관련 문제