【发布时间】:2020-06-02 11:55:21
【问题描述】:
我无法理解以下行为:一个标头具有一些基本类型,而另一个标头中我在多个函数中使用了这些类型。之后,我开始根据我定义的类型和函数构建类。如果我留下以下签名,则在函数头中:
void whateverFunction(parameters)
链接器指出,whateverFunction 有多个定义。现在如果将其更改为:
inline void whateverFunction(parameters)
链接问题消失了,所有编译和链接都很好。我所知道的关于 inline 的是,它用它的代码替换了每个函数调用,而不是它非常黑暗,所以我的问题是:
链接器如何处理 C++ 中的内联函数?
【问题讨论】:
-
详见"what is/are the purpose(s) of inline?",尤其是One Definition Rule部分。