我理解 inline
本身是对编译器的一个建议,它可能会或可能不会内联函数,它也会产生可链接的目标代码。
我认为 static inline
也是这样做的(可能是内联的,也可能不是内联的) ,但是在内联时不会产生可链接的对象代码(因为没有其他模块可以链接到它)。
extern inline
在这幅图中的位置是什么?
假设我想用一个内联函数替换一个预处理器宏,并要求这个函数内联(例如,因为它使用了 __FILE__
和 __LINE__
宏,这两个宏应该解析调用者,而不是这个被调用的函数)。也就是说,我希望看到一个编译器或链接器错误,以防函数没有得到内联。extern inline
会这样吗?(我认为,如果不能,那么除了坚持使用宏观手段之外,没有其他方法可以实现这种行为。)
C + + 和 C 之间有区别吗?
不同的编译器供应商和版本之间是否存在差异?