Предупреждение компилятора (уровень 1) C4743
Тип имеет разные размеры в файлах "file1" и "file2": size_1 и size_2 байтах
Внешняя переменная, на которую ссылается или определена в двух файлах, имеет разные типы в этих файлах, и компилятор определил, что размер переменной в файле1 отличается от размера переменной в файле2.
Замечания
Существует важный случай, когда это предупреждение может быть выдается для C++. Если объявлять типы классов с одинаковым именем в двух разных файлах, если эти объявления содержат виртуальные функции, а если объявления не совпадают, компилятор может выдавать предупреждение C4744 для таблиц виртуальных функций. Предупреждение возникает из-за двух таблиц виртуальных функций разного размера для одного типа, а компоновщик должен выбрать один из них для включения в исполняемый файл. Возможно, это может привести к тому, что программа вызывает неправильную виртуальную функцию.
Чтобы устранить это предупреждение, используйте одно и то же определение типа или используйте разные имена для типов или переменных.
Пример
Следующий пример приводит к возникновению ошибки C4743. Чтобы скомпилировать его, поместите оба файла в одну папку, а затем выполните следующую команду в командной строке разработчика:
cl /EHsc /W1 /GL /O2 C4743a.cpp C4743b.cpp
Исходный файл 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;
Исходный файл 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() {}
Чтобы устранить эту проблему, переименуйте один из C
классов.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по