컴파일러 경고(수준 4) C4714
'function' 함수가 인라인이 아니라 __forceinline으로 표시되었습니다.
주어진 함수를 인라인 확장용으로 선택했지만 컴파일러에서 인라이닝을 수행하지 못했습니다.
컴파일러에서는 __forceinline이 __inline보다 강력하지만 컴파일러의 판단에 따라 인라이닝이 수행됩니다. 그러나 이 함수를 인라이닝함으로써 얻는 이익을 결정하기 위한 휴리스틱은 사용되지 않습니다.
일부 경우에서는 컴파일러가 기계적인 이유로 인해 특정 함수를 인라인하지 않습니다. 예를 들어, 컴파일러에서는 다음과 같은 경우 인라인하지 않습니다.
SEH 및 C++ EH 모두가 혼합된 결과가 나타나는 함수
-GX/EHs/EHa가 설정되어 있을 때 값에서 전달한 복사 생성된 개체를 사용하는 일부 함수
-GX/EHs/EHa가 설정되어 있을 때 값에 의해 풀릴 수 있는 개체를 반환하는 함수
-Og/Ox/O1/O2 없이 컴파일할 때 인라인 어셈블리를 사용하는 함수
가변 인수 목록을 사용하는 함수
C++ 예외 처리의 try 문을 사용하는 함수
다음 샘플에서는 C4714 경고가 발생하는 경우를 보여 줍니다.
// C4714.cpp
// compile with: /Ob1 /GX /W4
__forceinline void func1()
{
try
{
}
catch (...)
{
}
}
void func2()
{
func1(); // C4714
}
int main()
{
}