何时需要在C++中为函数和方法编写inline关键字?
大家好!我是一名C++初学者,一直对inline关键字感到困惑。我似乎明白它会在调用处“嵌入”函数代码,以避免调用开销。但实际上,现代编译器(GCC、Clang、MSVC)常常自行决定是否内联函数,即使我没有写inline。反之,即使我写了inline,编译器也可能忽略它而不内联。
结果我搞糊涂了。例如:
```cpp
// 文件 utils.h
int square(int x) {
return x * x;
}
// 文件 main.cpp
#include "utils.h"
int main() {
int a = square(5);
return 0;
}
```
如果我将这个头文件包含到多个.cpp文件中,链接器会报多重定义错误。有人告诉我需要添加inline。但为什么呢?毕竟square是个小函数,编译器本就可以内联它。如果我加了inline,会有什么变化?或者另一种情况:我在类中有一个大函数。如果我