inline使用关键字(§ 7.1.3/4)有两个含义:
- 它提示编译器在调用点替换函数体优于通常的函数调用机制。
- 即使省略了内联替换,也会遵循内联的其他规则(尤其是一个定义规则)。
通常,如果需要,任何主流编译器都会在调用点替换函数体,因此inline仅仅为函数标记#1并不是真正需要的。
进一步#2说,据我所知,当您将函数声明为static inline函数时,
函数上的static关键字强制inline函数具有内部链接(内联函数具有外部链接)此类函数的每个实例都被视为单独的函数(每个函数的地址不同)并且这些函数的每个实例都有自己的副本静态局部变量和字符串文字(内联函数只有一个副本)
因此,这样的功能就像任何其他static功能一样,关键字inline不再重要,它变得多余。
因此,实际上标记一个功能static,inline两者都没有任何用处。它应该是static(不是最喜欢的)或inline(最喜欢的),
那么,在一个函数上使用staticandinline一起实际上没有用吗?