Main Content

MISRA C:2023 Rule 21.11

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

Since R2024a

Description

Rule Definition

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

Rationale

Using the facilities of this header file can cause undefined behavior.

Polyspace Implementation

If the function is a macro and the macro is expanded in the code, this rule is violated. It is assumed that rule 21.2 is not violated.

Troubleshooting

If you expect a rule violation but do not see it, refer to Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

        #include <tgmath.h>//Noncompliant

float f1,res;


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

In this example, the rule is violated when the sqrt macro defined in tgmath.h is used.

Correction — Use Appropriate Function in math.h

For this example, one possible correction is to use the function sqrtf defined in math.h for float arguments.

#include <math.h>

float f1, res;


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

Check Information

Group: Standard Libraries
Category: Advisory
AGC Category: Advisory

Version History

Introduced in R2024a