Rule 5.9 - Scope of uniqueness

Moderators: misra-c, david ward

Post Reply
jade
Posts: 1
Joined: Thu Aug 20, 2015 10:21 pm
Company: Intel

Rule 5.9 - Scope of uniqueness

Post by jade » Fri Sep 11, 2015 5:49 pm

In Rule 5.9, the amplification says that the identifier name should be unique across all name spaces and translation units. This is an expansion of what's in the rule header, but is consistent with the purpose of the "Amplification" sections. However, the examples imply that identifiers can be unique if there is no linkage. Isn't this a contradiction?

Steve Montgomery
Posts: 104
Joined: Fri Sep 17, 2004 1:31 pm
Company: .
Location: Northumberland or Isle of Skye

Re: Rule 5.9 - Scope of uniqueness

Post by Steve Montgomery » Mon Sep 14, 2015 9:34 pm

My interpretation is that an identifier with internal linkage must be different from any other identifier. However, an identifier with no linkage doesn't have to be unique provided that all uses of the identifier denote objects that also have no linkage.

So, in the examples given in the rule, the identifier index appears three times, twice in file1.c and once in file2.c. This is compliant with the rule because none of the objects has linkage. However, count in file1.c breaks the rule because it denotes an object with internal linkage and two objects with no linkage.

misra-c
Posts: 571
Joined: Thu Jan 05, 2006 1:11 pm

Re: Rule 5.9 - Scope of uniqueness

Post by misra-c » Fri Oct 09, 2015 12:44 pm

The amplification clarifies the scopes over which identifiers with internal linkage should be checked. This rule only applies where one of the identifiers in the comparison has internal linkage.

The following table gives the application of rules for different combinations of object identifiers:

Code: Select all

                            Identifier 2 linkage
   Identifier 1    |  external   | internal  | none
   ------------------------------------------------------------
   external        | 5.8         | 5.8 / 5.9 | 5.8
   -------------------------------------------------------------
   internal        | 5.8 / 5.9   | 5.9       | 5.9
   ------------------------------------------------------------
   none            | 5.8         | 5.9       | 5.3(if hidden)
   -------------------------------------------------------------
---
Posted by and on behalf of
the MISRA C Working Group

Post Reply

Return to “8.5 Identifers”