Start here

Home
About Klocwork
What's new
Fixed issues
Release notes
Installation

Reference

C/C++ checkers
Java checkers
C# checkers
MISRA C 2004 checkers
MISRA C++ 2008 checkers
MISRA C 2012 checkers
MISRA C 2012 checkers with Amendment 1
Commands
Metrics
Troubleshooting
Reference

Product components

C/C++ Integration build analysis
Java Integration build analysis
Desktop analysis
Refactoring
Klocwork Static Code Analysis
Klocwork Code Review
Structure101
Tuning
Custom checkers

Coding environments

Visual Studio
Eclipse for C/C++
Eclipse for Java
IntelliJ IDEA
Other

Administration

Project configuration
Build configuration
Administration
Analysis performance
Server performance
Security/permissions
Licensing
Klocwork Static Code Analysis Web API
Klocwork Code Review Web API

Community

View help online
Visit RogueWave.com
Klocwork Support
Rogue Wave Videos

Legal

Legal information

MISRA.INCL.TGMATH.2012

MISRA C 2012 Rule 21.11: The standard header file <tgmath.h> shall not be used

Category: Required

Analysis: Decidable, Single Translation Unit

Applies to: C99

Amplification

None of the facilities that are specified as being provided by <tgmath.h> shall be used.

Rationale

Using the facilities of <tgmath.h> may result in undefined behaviour.

Limitation

On Windows (Visual Studio), it is possible to compile without including tgmath.h but using its facilities - Windows assumes that the <tgmath> file is missing and includes it anyway. This is a known limitation; the checker won't report on calling functions from these headers in this case as tgmath has methods from math.h and complex.h headers.

Example

#include <tgmath.h>        /* Non-compliant    */

float f1, f2;

void f ( void )
{
    f1 = sqrt ( f2 );        /* Non-compliant - generic sqrt used    */
}

#include <math.h>

float f1, f2;

void f ( void )
{
    f1 = sqrtf ( f2 );        /* Compliant - float version of sqrt used    */
}