This diagnostic rule is based on the MISRA (Motor Industry Software Reliability Association) software development guide.
This rule only applies to programs written in C. Functions or macros from the '<tgmath.h>' header file should not be used. They may lead to undefined behavior.
Look at the example:
void bar(float complex fc) { ceil(fc); // undefined behavior }
The 'ceil' function call with an actual argument of the 'float complex' type leads to undefined behavior because the standard library does not contain a specialized version with such formal parameter type.
If a specialized function exists, it should be used to avoid such situations:
#include <tgmath.h> float foo(float x) { return sin(x); }
For the 'sin' function, a specialized version with a formal argument of the 'float' type - 'sinf' type exists:
#include <math.h> float foo(float x) { return sinf(x); }
This diagnostic is classified as:
|