MISRA C:2012 Rule 8.8
The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage
Description
Rule Definition
The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage1 .
Rationale
If you do not use the static
specifier consistently in all declarations of
objects with internal linkage, you might declare the same object with external and internal
linkage.
In this situation, the linkage follows the earlier specification that is visible (C99 Standard, Section 6.2.2). For instance, if the earlier specification indicates internal linkage, the object has internal linkage even though the latter specification indicates external linkage. If you notice the latter specification alone, you might expect otherwise.
Polyspace Implementation
The rule checker detects situations where:
The same object is declared multiple times with different storage specifiers.
The same function is declared and defined with different storage specifiers.
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
Check Information
Group: Declarations and Definitions |
Category: Required |
AGC Category: Required |
Version History
Introduced in R2014b
See Also
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.