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

Стандартный заголовочный файл <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: необходимый
Язык: C90, C99

Введенный в R2014b