Main Content

MISRA C++:2008 Rule 2-10-3

A typedef name (including qualification, if any) shall be a unique identifier

Description

Rule Definition

A typedef name (including qualification, if any) shall be a unique identifier.

Rationale

When you use reuse typedef names, the code becomes confusing and difficult to maintain. You might use the wrong identifier and introduce bugs that are difficult to fix.

Polyspace Implementation

The rule reports a violation on identifier declarations where the identifier name is the same as a previously declared typedef name. The checker does not flag situations where the conflicting names occur in different namespaces.

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

namespace NS1 {
    typedef int WIDTH;
}

namespace NS2 {
    float WIDTH; //Compliant
}

void f1() {
    typedef int TYPE;
}

void f2() {
    float TYPE; //Noncompliant
}

In this example, the declaration of TYPE in f2() conflicts with a typedef declaration in f1().

The checker does not flag the redeclaration of WIDTH because the two declarations belong to different namespaces.

Check Information

Group: Lexical Conventions
Category: Required

Version History

Introduced in R2013b