exponenta event banner

MISRA C:2012 Правило 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);
}

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

Группа: Стандартные библиотеки
Категория: Обязательно
Категория СМЖЛ: требуется
Представлен в R2014b