メインコンテンツ

MISRA C:2023 Rule 21.11

The standard header file <tgmath.h> should not be used

R2024a 以降

説明

ルール定義

The standard header file <tgmath.h> should not be used 1 .

根拠

このヘッダー ファイルの機能を使用すると、未定義の動作が発生する可能性があります。

Polyspace 実装

関数がマクロであり、コードに展開される場合、このルールに違反します。ルール 21.2 に違反していないことを前提としています。

トラブルシューティング

ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。

すべて展開する


        #include <tgmath.h>//Noncompliant

float f1,res;


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

この例では、tgmath.h で定義されるマクロ sqrt が使用される場合、ルールに違反します。

修正 — math.h の適切な関数を使用

この例では、1 つの修正方法として、math.h で定義された、float 型引数用の関数 sqrtf を使用しています。

#include <math.h>

float f1, res;


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

チェック情報

グループ: 標準ライブラリ
カテゴリ: 推奨
AGC カテゴリ: 推奨

バージョン履歴

R2024a で導入


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace® Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.