Правило 21.13 MISRA C:2012

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

Описание

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

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

Объяснение

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

Реализация Polyspace

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

Обменивайтесь сообщениями в отчете

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

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

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

Примеры

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

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: обязательный
Язык: C90, C99

Введенный в R2017a