나중에 선언 된 C 참조 엔티티의 기능 본문을 인라인 할 수 있습니다.

StackOverflow https://stackoverflow.com/questions/1817950

  •  10-07-2019
  •  | 
  •  

문제

헤더 파일에 두 개의 인라인 함수가 있다고 가정 해 봅시다.

inline int foo() { return bar()+2; }
inline int bar() { return 3; }

나중에 'bar'가 선언 되더라도 C99 컴파일러가 "foo"를 인라인으로 생각할 수 있습니까? 기능 본체와 같은 다른 내부 규칙이 크지 않다고 가정하면 트리거됩니다.

C99가 이것을 옵션으로 남겨 두더라도 C 컴파일러의 구현이이를 수행하고 있습니까?

도움이 되었습니까?

해결책

함수가 제대로 프로토 타입으로 표시되는 한, 어떤 순서를 선언하는지는 중요하지 않습니다.

다른 팁

inline 컴파일러에 대한 힌트 일 뿐이며 현대 최적화 컴파일러에서는 무시되지 않습니다. 당신은 무언가가 감소하는지 아닌지에 대해 아무것도 가정 할 수 없습니다. 일부 컴파일러는 가능한 경우 특정 함수를 감소시킬 수있는 pragmas를 제공합니다 (예 : MSVC __forceinline). 당신이 절대적으로 알아야한다면, 당신은 출력의 분해를 봐야합니다.

즉, 주어진 스 니펫의 경우, 괜찮은 최적화 컴파일러는 inline 또는 단일 헤더 인 한.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top