2010-06-23 3 views
2

여기에 C++의 인라인 함수에 관한 작은 질문이 있습니다.inline functions in C++

C에서 컴파일의 어느 단계에서 인라인 함수가 실제로 호출시 인라인 되었습니까?

기본적으로 어떻게 작동합니까?

프로그래머가 인라인 키워드를 사용하여 함수 앞에 요청한 후에 컴파일러가 해당 함수가 인라인이어야한다고 컴파일러가 결정한 경우 프로그래머가 컴파일러에서 언제 수행 하는지를 알려줍니다. 편집.

매크로가 확장되어있는 것처럼 전처리 단계입니까?

+0

관련 정보 : http://stackoverflow.com/questions/1759300/c-when-should-i-y-key-word-inline-for-a-function-method – Alerty

+0

위에서 언급 한 복제본은 토론 기반입니다. 인라인 함수 개념 하지만 제 질문은 개념에 관한 것이 아니라 컴파일 과정에 관한 것입니다. – Vijay

+0

@Georg Fritzsche : 내 의견을 편집했습니다.) – Alerty

답변

4

컴파일러에 따라 다릅니다. 일부 컴파일러의 일부 단계는 다른 컴파일러에서 해당 단계가 없습니다. 그래서 당신의 질문에는 확실한 답이 없습니다.

하지만 일반적으로 함수의 구문 분석 트리를 만든 후에 코드가 실제로 생성되거나 많은 최적화가 수행되기 전에 수행됩니다. 최적화 프로그램에서 사용할 수있는 최대한의 정보를 원하기 때문에 최적의 위치입니다.

전 처리기 매크로 확장과 같이 처리하는 것은 일반적으로 너무 빠릅니다. 컴파일러는 적절한 유형 검사를 수행하는 데 충분한 정보가 없으며 부작용이 두 번 이상 발생하는 실수를하는 것이 쉽습니다.

그리고 GMan은 여기에서 내가하는 것보다 function inlining process에 대해 훨씬 더 자세히 설명하는 주석에 훌륭한 위키 백과 링크를 제공했습니다. 내 대답은 일반적으로 사실이지만, 많은 변화가 있습니다. 생각했던 것보다 훨씬 더 많습니다.