2009-03-17 5 views
0

C++ ISO 표준은 "클래스 정의 내에 정의 된 함수는 인라인 함수입니다."라고 말합니다. *기본 인라인 함수에 대해 IGNORE C++ 표준을 따르는 컴파일러가 있습니까?

이 규칙을 무시한 컴파일러에 대해 알고 계십니까?

거기에 '인라인 제안'을 넣지 않을 컴파일러에 대해 알고 있습니까?

은 (인라인에 대한 이론을 반복하지 마십시오, 나는 알고있다 - 나는 실용적인 답을해야합니다) 모든 컴파일러가 결정 어떤 인라인 제안을 무시할 수 있습니다

+0

매우 최근에 같은 사람이 물어 본 http://stackoverflow.com/questions/654452/are-there-any-compilers-that-ignore-c-standard-about-default-inline-functions의 중복. –

+0

죄송합니다. 질문을 다시하고 싶습니다. 지금 FAQ를 읽고 이전 질문을 편집 할 것입니다. 혼란스러워서 미안해. –

답변

1

. 함수가 너무 복잡하다고 판단하면 예를 들어 인라인되지 않습니다. 함수의 주소를 가져 가면 함수는 일부 장소에서 인라인 될 수 있지만 주소가 가리 키도록 다른 함수가 생성됩니다.

컴파일러에 대한 제안으로 클래스 정의에서 함수를 정의 할 때 inline과 암시 적 인라인을 생각해보십시오.

0

GCC에서 당신은 그것은 단순히 사실의 성명, 규칙없는

-finline-limit=n 
-fno-inline 
1

사용할 수 있습니다. 사양은 기능이 인 것으로 정의되어 있으며 인라인으로 정의되어 있습니다. 따라서 컴파일러가 생성 된 코드를 실제로 인라인 화하는 것이 더 쉬워 지지만 표준에서이를 요구하지는 않습니다.

다른 개념입니다. 생성 된 코드가 어떻게 생겼는지는 컴파일러 혼자만의 것이므로 표준은 실제로 요구 사항을 부과하지 않습니다 (물론 지정된대로 작동해야한다는 것을 제외하고).

0

은 매우 유사한 질문에 대한 내 대답을 참조하십시오 When is "inline" ineffective? (in C)

요약 : 인라인 만 여러 정의를 허용하는 데 필요합니다. 변경을 호출하는 함수는 전적으로 선택 사항입니다.