带有静态局部变量的 C99 静态内联函数
C99 static inline function with static local variable
如果我用 C99 写这样的东西 header:
static inline void f()
{
static int x = 0;
// Do something with x
}
是否保证包含此 header 的每个模块都获得单独的 f()
实例化和自己的 x
实例化?
是的,根据定义,这就是 static
的意思。它在 header 中的事实无关紧要。从概念上讲,C 预处理器创建 one 文件来编译每个 .c
文件,就好像您刚刚(重新)将 header 中的所有文本输入到 .c
你自己。
如果我用 C99 写这样的东西 header:
static inline void f()
{
static int x = 0;
// Do something with x
}
是否保证包含此 header 的每个模块都获得单独的 f()
实例化和自己的 x
实例化?
是的,根据定义,这就是 static
的意思。它在 header 中的事实无关紧要。从概念上讲,C 预处理器创建 one 文件来编译每个 .c
文件,就好像您刚刚(重新)将 header 中的所有文本输入到 .c
你自己。