Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rule 5.5 and local static variables
#1
Hello,

I wanted to confirm if having local static variables with the same name in different functions is not compliant with rule 5.5.
For example:

Code:
void foo1() {
    static int x1 = 0; /* Not compliant - foo1, foo2 */
    static int x2 = 0; /* Not compliant - foo1, foo2 */
}
void foo2() {
    static int x1 = 0; /* Not compilant - foo1, foo2 */
    int x2;            /* Not compliant - foo1, foo2 */
    int x3;            /* Not compliant - global, foo2 */
}
extern int x3; /* Not compliant - global, foo2 */

This is similar to http://www.misra-c.com/forum/viewtopic.php?f=61&t=812 and http://www.misra-c.com/forum/viewtopic.p...=962#p1807 but I just wanted a clear confirmation.

Thanks
Reply
#2
The examples are all correctly identified as being non-compliant.

Rule 5.5 applies to all scopes. Any identifier used to declare or define an object with static storage duration, regardless of its scope, shall not be used to declare or define any other object, regardless of its storage duration or scope.
Posted by and on behalf of the MISRA C Working Group
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)