C11, 6.7.4 (Function Specifiers), p3 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 = -0x16c087e80f1e27.0p-62; /* -0.00138867637746099294692 */ extern inline void func(double a) { double b; b = a * C; // GCC flagged this line }
Compliant Solution
This compliant solution does not declare the constant to be {[static}}.
const double C = -0x16c087e80f1e27.0p-62; /* -0.00138867637746099294692 */ extern inline void func(double a) { double b; b = a * C; // GCC flagged this line }