Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'type' tem tamanho diferente em 'file1' e 'file2': size_1 e size_2 bytes
Observações
Uma variável externa referenciada ou definida em dois arquivos tem tipos diferentes nesses arquivos, e o compilador determinou que o tamanho da variável em file1 difere do tamanho da variável em file2.
Há um caso importante em que esse aviso pode ser emitido para C++. Se você declarar tipos de classe com o mesmo nome em dois arquivos diferentes, se essas declarações contiverem funções virtuais e se as declarações não forem as mesmas, o compilador poderá emitir um aviso C4744 para as tabelas de funções virtuais. O aviso ocorre porque há duas tabelas de funções virtuais de tamanhos diferentes para o mesmo tipo, e o vinculador deve escolher uma delas para incorporar ao executável. É possível que isso possa resultar em seu programa chamando a função virtual errada.
Para resolver esse aviso, use a mesma definição de tipo ou use nomes diferentes para os tipos ou variáveis.
Example
O exemplo a seguir gera C4743. Para compilá-lo, coloque os dois arquivos na mesma pasta e execute este comando em um prompt de comando do desenvolvedor:
cl /EHsc /W1 /GL /O2 C4743a.cpp C4743b.cpp
Ficheiro de C4743a.cpporigem :
// 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;
Ficheiro de C4743b.cpporigem :
// 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() {}
Para resolver esse problema, renomeie uma das C classes.