我只是对 C 编程语言中的 inline 关键字感到困惑。
1.在我的实践中,内联函数具有内部作用域,那么它与 static 关键字有何不同?
2.inline函数有内部作用域,但是我看到一些inline函数加上了static关键字,有什么用?
//temp.c
inline void exit_aio(){
puts("inline");
}
void test(){
exit_aio();//error,undefined reference to `exit_aio'
}
如果我在函数exit_aio()的定义中添加static关键字,那么程序就可以正常运行了。
2.inline函数有内部作用域,但是我看到一些inline函数加上了static关键字,有什么用?
它将
inline
函数放置在标头中,而不会有链接器问题的风险。
我只是对内联关键字感到困惑
现代编译器仅将其视为提示,他们可能决定是否内联函数。如果该函数不是
static
并且它是在许多模块包含的头文件中定义的,则链接器会抱怨。
某些编译器具有 force 内联的特殊属性 - 例如 gcc 的
__attribute__((always_inline))