Аргументы указателя к Стандартной Библиотечной функции memcmp
укажу или на тип указателя, чрезвычайно тип со знаком, тип чрезвычайно без знака, по существу булев тип или на по существу перечислимый тип
Аргументы указателя к Стандартной Библиотечной функции memcmp
укажу или на тип указателя, чрезвычайно тип со знаком, тип чрезвычайно без знака, по существу булев тип или на по существу перечислимый тип.
Это правило прибывает из MISRA C®: 2 012 Поправок 1.
Стандартная Библиотечная функция
memcmp ( lhs, rhs, num );
num
байты двух объектов, что lhs
и rhs
укажите на.Не используйте memcmp
для сравнения байта байтом следующего.
Ввод | Объяснение |
---|---|
Структуры | Если у членов структуры есть различные типы данных, ваш компилятор вводит дополнительное дополнение для выравнивания данных в памяти. Содержимое этих дополнительных дополнительных байтов бессмысленно. Если вы выполняете сравнение байта байтом структур с memcmp , вы сравниваете даже бессмысленные данные, хранимые в дополнении. Вы можете сделать ложный вывод, что две структуры данных не равны, даже если у их членов-корреспондентов есть то же значение. |
Объекты с чрезвычайно типом с плавающей точкой | То же значение с плавающей точкой может храниться с помощью различных представлений. Если вы выполняете сравнение байта байтом двух переменных с memcmp , можно сделать ложный вывод, что переменные неравны, даже когда у них есть то же значение. Причина состоит в том, что значения хранятся с помощью двух различных представлений. |
Чрезвычайно массивы символов | Чрезвычайно массивы символов обычно используются, чтобы сохранить строки. В строках содержимом в байтах после того, как пустой терминатор строки бессмыслен. Если вы выполняете сравнение байта байтом двух строк с memcmp , вы можете сделать ложный вывод, что две строки не равны, даже если байты перед пустым хранилищем терминатора строки то же значение. |
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: Стандартные библиотеки |
Категория: необходимый |
Категория AGC: необходимый |
Check MISRA C:2012 (-misra3)
| MISRA C:2012 Rule 21.14
| MISRA C:2012 Rule 21.15