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. 1

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


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.