Delen via


Compilerwaarschuwing (niveau 1) C4743

'type' heeft een andere grootte in 'file1' en 'file2': size_1 en size_2 bytes

Opmerkingen

Een externe variabele waarnaar wordt verwezen of gedefinieerd in twee bestanden heeft verschillende typen in deze bestanden en de compiler heeft vastgesteld dat de grootte van de variabele in bestand1 verschilt van de grootte van de variabele in bestand2.

Er is een belangrijk geval wanneer deze waarschuwing kan worden verzonden voor C++. Als u klassetypen met dezelfde naam in twee verschillende bestanden declareert, als deze declaraties virtuele functies bevatten en als de declaraties niet hetzelfde zijn, kan de compiler waarschuwing C4744 verzenden voor de virtuele functietabellen. De waarschuwing treedt op omdat er twee virtuele functietabellen van verschillende grootten voor hetzelfde type zijn en de linker een van deze tabellen moet kiezen om op te nemen in het uitvoerbare bestand. Het is mogelijk dat het kan resulteren in uw programma dat de verkeerde virtuele functie aanroept.

Als u deze waarschuwing wilt oplossen, gebruikt u dezelfde typedefinitie of gebruikt u verschillende namen voor de typen of variabelen.

Example

In het volgende voorbeeld wordt C4743 gegenereerd. Als u deze wilt compileren, plaatst u beide bestanden in dezelfde map en voert u deze opdracht uit in een opdrachtprompt voor ontwikkelaars:

cl /EHsc /W1 /GL /O2 C4743a.cpp C4743b.cpp

Bronbestand C4743a.cpp:

// C4743a.cpp
class C {
public:
    virtual void f1(void);
    virtual void f2(void);
    virtual void f3(void);
};

void C::f1(void) {}
void C::f2(void) {}
void C::f3(void) {}
C q;

Bronbestand C4743b.cpp:

// C4743b.cpp
class C {
public:
    virtual void f1(void);
    virtual void f2(void);
    virtual void f3(void);
    virtual void f4(void);
    virtual void f5(void);
};

void C::f4(void) {}
void C::f5(void) {}
C x;

int main() {}

U kunt dit probleem oplossen door de naam van een van de C klassen te wijzigen.