MISRA C:2012 Rule 21.11

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

Описание

Определение правила

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

Объяснение

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

Реализация Polyspace

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

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

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

  • Идентификатор 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