C and C++


LANG.ID.NU.EXT : Non-unique Identifiers: External Name

Summary

An identifier with external linkage is identical to one or more other identifiers.

See Identifier Classes for related warning classes.

Properties

Class Name Non-unique Identifiers: External Name
Significance style
Mnemonic LANG.ID.NU.EXT
Categories
MisraC2023 MisraC2023:5.8 Identifiers that define objects or functions with external linkage shall be unique
Misra2012 Misra2012:5.8 Identifiers that define objects or functions with external linkage shall be unique
Misra2004 Misra2004:5.5 No object or function identifier with static storage duration should be reused
CWE CWE:710 Improper Adherence to Coding Standards
CERT-C CERT-C:DCL23-C Guarantee that mutually visible identifiers are unique
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="Non-unique Identifiers: External Name"

Example

Suppose fileA.c and fileB.c are both in the analyzed software (but not necessarily in the same compilation unit).

/* LANG.ID.NU.EXT.a.c */

#define externA 1
typedef int externB;
static void externC(void);
/* LANG.ID.NU.EXT.b.c */

extern int externA;            /* 'Non-unique Identifiers: External Name' warning issued here */
extern int externB;            /* 'Non-unique Identifiers: External Name' warning issued here */
extern int externC;            /* 'Non-unique Identifiers: External Name' warning issued here */

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.