컴파일러 경고(수준 3) C4738
업데이트: 2007년 11월
오류 메시지
32비트 float 결과를 메모리에 저장하면 성능이 저하될 수 있습니다.
storing 32-bit float result in memory, possible loss of performance
C4738은 할당, 캐스트, 인수 전달 및 기타 연산의 결과를 반올림해야 함을 경고하거나, 연산에서 레지스터가 부족하여 메모리를 사용해야 했음(spilling)을 나타냅니다. 이로 인해 성능이 저하될 수 있습니다.
반올림하지 않으면서 이 경고를 해결하려면 /fp:fast로 컴파일하거나 float 대신 double을 사용합니다.
레지스터가 부족해지는 것을 피하면서 이 경고를 해결하려면 계산의 순서를 변경하고 인라이닝의 사용을 수정하십시오.
이 경고는 기본적으로 해제되어 있습니다. 자세한 내용은 기본적으로 해제되어 있는 컴파일러 경고를 참조하십시오.
예제
다음 샘플에서는 C4738 경고가 발생하는 경우를 보여 줍니다.
// C4738.cpp
// compile with: /c /fp:precise /O2 /W3
// processor: x86
#include <stdio.h>
#pragma warning(default : 4738)
float func(float f)
{
return f;
}
int main()
{
extern float f, f1, f2;
double d = 0.0;
f1 = func(d);
f2 = (float) d;
f = f1 + f2; // C4738
printf_s("%f\n", f);
}