Main Content

MISRA C++:2023 Rule 10.1.2

The volatile qualifier shall be used appropriately

Since R2024b

Description

Rule Definition

The volatile qualifier shall be used appropriately.

Rationale

Avoid using the volatile qualification with these entities:

  • Local variables

  • Function parameters

  • Function return types

  • Member functions

  • Structured bindings

If you use the volatile qualification with any of the preceding entities, the code behavior can become difficult to understand and difficult to define.

Polyspace Implementation

Polyspace® reports a violation of this rule if any of these entities are declared using the volatile qualification:

  • Function return types

  • Local variables

  • Function parameters

  • Structured bindings

  • Class member functions

Troubleshooting

If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

In this example, Polyspace reports a violation of this rule when the volatile qualification is used inappropriately.

#include <cstdint>

class MyClass {
	volatile void a_volatile_func() {} //Noncompliant - volatile class member function


};

volatile MyClass func1() { //Noncompliant - volatile return type
	//...
}

void func2() {
	volatile MyClass A ; //Noncompliant - volatile local variable
}

void func3(volatile MyClass A) { //Noncompliant - volatile func parameter
	int pair[2] = {1, 2};
	auto volatile [ a, b ] = pair;   //Noncompliant - volatile structured binding
}

Check Information

Group: Declarations
Category: Required

Version History

Introduced in R2024b