MISRA C:2012 Rule 21.13

Любое значение передало функции в <ctype.h> будет представимым как unsigned char или быть значением EOF

Описание

Управляйте определением

Любое значение передало функции в <ctype.h> будет представимым как unsigned char или быть значением EOF.

Объяснение

Функции в <ctype.h> имейте четко определенное поведение только для int аргументы, значение которых в области значений unsigned char или отрицательная величина, эквивалентная из EOF. Использование других значений приводит к неопределенному поведению.

Реализация Polyspace

Polyspace® полагает, что отрицательная величина, эквивалентная из EOF, является-1 и не повышает нарушение, если вы передаете-1 в качестве аргумента к функции в ctype.h.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

развернуть все

bool_t f (uint8_t a)
{
	return (		 isdigit ((int32_t) a  )     /* Compliant     */
				&&  isalpha ((int32_t) 'b')     /* Compliant     */
				&&  islower (          EOF)     /* Compliant     */
				&&  isalpha (          256));   /* Non-compliant */
}

В этом примере правило нарушено когда 256, который не является ни одним unsigned char или значение EOF, передается как входной параметр isalpha функция.

Примечание

int броски в вышеупомянутом примере обязаны выполнять Правило 10.3.

Проверяйте информацию

Группа: Стандартные библиотеки
Категория: обязательный
Категория AGC: обязательный

Введенный в R2017a