Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"type" har olika storlek i "file1" och "file2": size_1 och size_2 byte
Anmärkningar
En extern variabel som refereras till eller definieras i två filer har olika typer i dessa filer, och kompilatorn fastställde att storleken på variabeln i file1 skiljer sig från storleken på variabeln i fil2.
Det finns ett viktigt fall när den här varningen kan genereras för C++. Om du deklarerar klasstyper med samma namn i två olika filer, om dessa deklarationer innehåller virtuella funktioner, och om deklarationerna inte är desamma, kan kompilatorn avge varning C4744 för de virtuella funktionstabellerna. Varningen beror på att det finns två virtuella funktionstabeller i olika storlekar för samma typ, och länkaren måste välja en av dem som ska införlivas i den körbara filen. Det är möjligt att det kan leda till att programmet anropar fel virtuell funktion.
Lös den här varningen genom att antingen använda samma typdefinition eller använda olika namn för typerna eller variablerna.
Example
I följande exempel genereras C4743. Kompilera den genom att placera båda filerna i samma mapp och sedan köra det här kommandot i en kommandotolk för utvecklare:
cl /EHsc /W1 /GL /O2 C4743a.cpp C4743b.cpp
Källfil 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;
Källfil 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() {}
Lös problemet genom att byta namn på en av klasserna C .