The C Standard, subclause 6.7.4 paragraph 3, says:
An inline definition of a function with external linkage shall not contain a definition of a modifiable object with static or thread storage duration, and shall not contain a reference to an identifier with internal linkage.
Noncompliant Code Example
This code refers to a static constant inside an external inline function:
static const double C = 0.123; extern inline void func(double a) { double b = a * C; /* ... */ }
Compliant Solution
This compliant solution does not declare the constant to be static
.
const double C = 0.123; extern inline void func(double a) { double b = a * C; /* ... */ }
Risk Assessment
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
DCL41-C | Low | Unlikely | Medium | P2 | L3 |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Bibliography
[ISO/IEC 9899:2011] | Subclause 6.7.4, "Function Specifiers" |