Main Content

MISRA C:2012 Rule 17.13

A function type shall not be type qualified

Since R2024a

Description

Rule Definition

A function type shall not be type qualified.

This rule comes from MISRA C™: 2012 Amendment 3.

Rationale

If the specification of a function type includes type qualifiers, the behavior is undefined.

Polyspace Implementation

The rule checker reports a violation if a typedef statement creates a new type that is a function type qualified with one of const, volatile, restrict, or _Atomic.

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

In this example, the first typedef statement defines a function type functionType. The subsequent typedef statements define new types that use this function type.

  • The second typedef statement violates the rule because it defines a type that is basically the function type functionType but const-qualified.

  • The third typedef statement is compliant with the rule because it simply defines another alias to the function type functionType.

  • The fourth typedef statement is also compliant with the rule because it defines a type that is a const-qualified pointer to the function type functionType.

#include <stdint.h>
typedef uint16_t functionType (void);
typedef const functionType aFunctionType;             //Noncompliant
typedef functionType anotherFunctionType;             //Compliant
typedef functionType * const pointerToFunctionType;   //Compliant

Check Information

Group: Functions
Category: Required
AGC Category: Required

Version History

Introduced in R2024a