Неправильные аргументы к макросу offsetof
вызывают неопределенное поведение
Неправильное использование offsetof на C++ происходит, когда вы передаете аргументы макросу offsetof
, для которого не задано поведение макроса.
Макрос offsetof
:
offsetof(classType, aMember)
aMember
с начала объекта типа classType
. Для использования в offsetof
classType
и aMember
имеют определенные ограничения:
classType
должен быть стандартным классом макета.
Например, это не должно иметь функций членства virtual
. Для получения дополнительной информации о требованиях для стандартного класса макета смотрите C++, названный требованиями: StandardLayoutType.
aMember
не должен быть статичным.
aMember
не должен быть функцией членства.
Средство проверки отмечает использование макроса offsetof
, где аргументы нарушают один или несколько из этих ограничений.
Нарушение ограничений на аргументы макроса offsetof
приводит к неопределенному поведению.
Используйте макрос offsetof
только на нестатических элементах данных стандартного класса макета.
Результат детализирует состояние, какое ограничение на макрос offsetof
нарушено. Зафиксируйте нарушение.
Группа: Программирование |
Язык: C++ |
Значение по умолчанию: на |
Синтаксис командной строки:
OFFSETOF_MISUSE |
Влияние: носитель |