- static函数
- static 一般是加在.cpp/.c里边的,用于声明这个函数仅用于当前源文件,其它编译实体不可用
- inline函数
- 如果一个函数是内联的,那么在编译时,编译器会把该函数的代码在每个调用该函数的地方展开
- inline关键字只能建议函数内联,至于该函数是否真的内联完全由编译器决定
- static inline
- static inline 只在纯 C 中有意义,在 C++ 中是没有这个写法的
- 纯C中,分别将多个源文件(.c)编译成目标文件(.o)时,如果编译器不对inline函数进行内联,则这多个源文件中各自都有一段该函数的定义,此时将这多个.o文件链接,则会出现重复定义的错误。所以要加一个static,来将各自的内联函数作用域限定在自身中,这样就不会出现重复定义的错误。说白了,就是因为编译器不靠谱(不一定会将inline修饰的函数内联展开),所以加一个static防止出现重复定义的错误。
- 在 C++ 中,inline 修饰的函数是允许存在多份定义,如果编译器不对inline函数进行内联,则这多个源文件中各自都有一段该函数的定义,此时将这多个.o文件链接,g++编译器会只保留一段函数定义。
static、inline、static inline?
于 2024-01-02 21:13:23 首次发布