Несоответствие между typedef
операторы
Эта проверка деактивирована в Polyspace по умолчанию® по мере анализа You Code. Смотрите Checkers Deactivated in Polyspace как You Code Default Analysis (Polyspace Bug Finder Access).
Этот дефект возникает при typedef
операторы приводят к конфликтующим базовым типам для одного из следующих типов данных:
size_t
ssize_t
wchar_t
ptrdiff_t
Если вы изменяете базовый тип size_t
, ssize_t
, wchar_t
, или ptrdiff_t
, у вас есть несогласованные определения того же типа. Модули компиляции с различными путями включения могут потенциально использовать различные по размеру типы, вызывающие конфликты в вашей программе.
Например, скажите, что вы задаете функцию в одном модуле компиляции, которая переопределяет size_t
как беззнаковое длинное. Но в другом модуле компиляции, который использует size_t
определение из <stddef.h>
, вы используете ту же функцию как extern
декларация. Ваша программа столкнется с несоответствием между объявлением функции и определением функции.
Используйте допустимые определения типов. Для примера:
Удалите пользовательские определения типов для этих основных типов. Используйте только определения систем.
Используйте тот же размер для всех модулей компиляции. Переместите typedef
в общий заголовочный файл.
Группа: Программирование |
Язык: C | C++ |
По умолчанию: On |
Синтаксис командной строки: TYPEDEF_MISMATCH |
Влияние: Высокий |