MISRA C:2012 Rule 21.11

Стандартный заголовочный файл <tgmath.h> не должен использоваться

Описание

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

Стандартный заголовочный файл <tgmath.h> не должен использоваться.

Объяснение

Используя средства этого заголовочного файла может вызвать неопределенное поведение.

Реализация Polyspace

Если функция является макросом, и макрос расширен в коде, это правило нарушено. Это принято, что правило 21.2 не нарушено.

Дополнительное сообщение в отчете

  • Макрос' <имя> не должен использоваться.

  • Идентификатор XX не должен использоваться.

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

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

Примеры

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

#include <tgmath.h>

float f1,res;


void func(void) {
    res = sqrt(f1); /* Non-compliant */
}

В этом примере правило нарушено когда sqrt макрос задан в tgmath.h используется.

Коррекция — использует соответствующую функцию в math.h

В данном примере одна возможная коррекция должна использовать функциональный sqrtf заданный в math.h для float аргументы.

#include <math.h>

float f1, res;


void func(void) {
 res = sqrtf(f1);
}

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

Группа: стандартные библиотеки
Категория: необходимый
Категория AGC: необходимый
Введенный в R2014b