Udostępnij za pomocą


Ostrzeżenie kompilatora (poziom 1) C4537

"object" : "operator" zastosowany do typu innego niż UDT

Uwagi

Przekazano odwołanie, w którym oczekiwano obiektu (typu zdefiniowanego przez użytkownika). Odwołanie nie jest obiektem, ale wbudowany kod asemblera nie może dokonać rozróżnienia. Kompilator generuje kod tak, jakby obiekt był wystąpieniem.

Przykład

Poniższy przykład generuje kod C4537 i pokazuje, jak go naprawić:

// C4537.cpp
// compile with: /W1 /c
// processor: x86
struct S {
    int member;
};

void f1(S &s) {
    __asm mov eax, s.member;   // C4537
    // try the following code instead
    // or, make the declaration "void f1(S s)"
    /*
    mov eax, s
    mov eax, [eax]s.member
    */
}