Delen via


Compilerwaarschuwing (niveau 1) C4730

'main': het combineren van _m64- en drijvendekomma-expressies kan leiden tot onjuiste code

Opmerkingen

Een functie maakt gebruik van __m64 en float/double typen. Omdat de MMX- en drijvendekommaregisters dezelfde fysieke registerruimte delen (niet tegelijkertijd kunnen worden gebruikt), kan het gebruik __m64 en float/double typen in dezelfde functie leiden tot beschadiging van gegevens, wat mogelijk een uitzondering veroorzaakt.

Als u typen en typen drijvende komma in dezelfde functie veilig wilt gebruiken __m64 , moet elke instructie die gebruikmaakt van een van de typen worden gescheiden door de _m_empty() (voor MMX) of _m_femms() (voor 3DNow!) intrinsiek.

Example

In het volgende voorbeeld wordt C4730 gegenereerd:

// 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
}