2009-11-30 2 views
2

내가 내 헤더 파일에 두 개의 인라인 함수가 있다고 가정하자 나중에 선언 된 C 참조 기관의 기능 시체를 인라인 할 수 나중에 선언 했어? 함수 본문에서 큰 것으로와 같은 다른 내부 규칙이 트리거되지 않는다고 가정합니다.

C99이 이것을 옵션으로 남겨 두더라도 C 컴파일러를 구현하면 (일반적으로 Intel-C/Sun Studio/MSVC 및 gcc라고합니다)?

답변

3

함수가 제대로 프로토 타입 화되는 한 사용자가 선언 한 순서가 중요하지 않습니다.

3

inline은 컴파일러에게 힌트 일 뿐이며, 현대적인 최적화 컴파일러에서는 무시됩니다. 무언가가 인라인되는지 아닌지에 대해 아무 것도 가정 할 수 없습니다. 일부 컴파일러는 가능한 경우 특정 함수가 인라인되도록 강제하는 pragma를 제공합니다 (예 : MSVC __forceinline). 당신이 절대적으로 알아야 할 필요가 있다면, 당신은 출력의 디스 어셈블리를 봐야합니다.

즉, 제공된 코드 단편의 경우 적절한 최적화 컴파일러는 inline과 함께 하나의 헤더 인 것처럼 인라인 할 것입니다.