...
In this noncompliant code example, i2 and i5 are defined as having both internal and external linkage. Future use of either identifier results in in undefined behavior 8.
| Code Block | ||||
|---|---|---|---|---|
| ||||
int i1 = 10; /* Definition, external linkage */
static int i2 = 20; /* Definition, internal linkage */
extern int i3 = 30; /* Definition, external linkage */
int i4; /* Tentative definition, external linkage */
static int i5; /* Tentative definition, internal linkage */
int i1; /* Valid tentative definition */
int i2; /* Undefined, linkage disagreement with previous */
int i3; /* Valid tentative definition */
int i4; /* Valid tentative definition */
int i5; /* Undefined, linkage disagreement with previous */
int main(void) {
/* ... */
return 0;
}
|
...
Use of an identifier classified as both internally and externally linked is undefined behavior 8.
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
|---|---|---|---|---|---|
DCL36-C | Medium | Probable | Medium | P8 | L2 |
...