C语言 "inline" 关键字
TODO: inline 的发展历程: Myth and reality about inline in C99 – Jens Gustedt’s Blog (wordpress.com)
GNU89:
函数的实现之前添加不同的关键字:
inline
: 表明这个函数可能被优化. 如果没有被优化, 编译器就会视为一个常规函数的定义.extern inline
: 表明这个函数可能被优化. 如果没有被优化, 编译器就将这个函数的定义转换为该函数的声明, 即extern inline func();
因此当此函数被调用时, 可以调用一个外部的函数来替代. 如果没有函数调用它, 那么也可以没有外部的替代函数实现.static inline
: 表明这个函数可能被优化. 如果没有被优化, 编译器就会视为一个常规静态函数.
C99:
函数的实现之前添加不同的关键字:
inline
: 等效于gnu89中的extern inline
extern inline
: 等效于gnu89中的inline
static inline
: 与gnu89相同含义.
C++:
只有inline
一个关键字, 如果不能优化就定义为普通函数
Ref:
c++ - What does extern inline do? - Stack Overflow
Myth and reality about inline in C99 – Jens Gustedt’s Blog (wordpress.com)
C demo 关于以上的各种情况