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 inlineextern inline: 等效于gnu89中的inlinestatic 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 关于以上的各种情况