Аргументы указателя на функцию «Стандартная библиотека» memcmp указывает на тип указателя, по существу подписанный тип, по существу неподписанный тип, по существу логический тип или по существу перечисленный тип
Аргументы указателя на функцию «Стандартная библиотека» memcmp указывает на тип указателя, по существу подписанный тип, по существу неподписанный тип, по существу логический тип или по существу перечисленный тип.
Это правило основано на MISRA C ®: 2012 Поправка 1.
Функция «Стандартная библиотека»
memcmp ( lhs, rhs, num );
num байты двух объектов, которые lhs и rhs указывает на.Не использовать memcmp для побайтового сравнения следующего.
| Напечатать | Объяснение |
|---|---|
| Структуры | Если элементы структуры имеют различные типы данных, компилятор вводит дополнительное заполнение для выравнивания данных в памяти. Содержимое этих дополнительных байтов заполнения не имеет смысла. При выполнении побайтового сравнения структур с memcmp, вы сравниваете даже бессмысленные данные, хранящиеся в заполнении. Можно сделать ложный вывод о том, что две структуры данных не равны, даже если их соответствующие элементы имеют одинаковое значение. |
| Объекты с плавающим типом | Одно и то же значение с плавающей запятой может быть сохранено с использованием различных представлений. При выполнении побайтового сравнения двух переменных с memcmp, можно прийти к ложному выводу, что переменные неравны, даже если они имеют одно и то же значение. Причина заключается в том, что значения хранятся с использованием двух различных представлений. |
| По существу, массивы символов | По существу, массивы символов обычно используются для хранения строк. В строках содержимое в байтах после нуль-терминатора не имеет смысла. При выполнении побайтового сравнения двух строк с memcmp, можно сделать ложный вывод о том, что две строки не равны, даже если байты перед терминатором null хранят одно и то же значение. |
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Стандартные библиотеки |
| Категория: Обязательно |
| Категория СМЖЛ: требуется |