Share via


컴파일러 경고 (수준 1) C4730

'기본': _m64 및 부동 소수점 식을 혼합하면 잘못된 코드가 발생할 수 있습니다.

함수는 __m64 및 형식을 floatdouble/사용합니다. MMX 및 부동 소수점 레지스터는 동일한 실제 레지스터 공간을 공유하므로(동시에 사용할 수 없음), 동일한 함수의 사용 __m64float/double 형식으로 인해 데이터가 손상되어 예외가 발생할 수 있습니다.

동일한 함수에서 형식 및 부동 소수점 형식을 안전하게 사용 __m64 하려면 형식 중 하나를 사용하는 각 명령이 _m_empty()(MMX의 경우) 또는 _m_femms()(3DNow!) 내장 함수로 구분되어야 합니다.

다음 샘플에서는 C4730을 생성합니다.

// C4730.cpp
// compile with: /W1
// processor: x86
#include "mmintrin.h"

void func(double)
{
}

int main(__m64 a, __m64 b)
{
   __m64 m;
   double f;
   f = 1.0;
   m = _m_paddb(a, b);
   // uncomment the next line to resolve C4730
   // _m_empty();
   func(f * 3.0);   // C4730
}