Avatar ·

何时需要在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,会有什么变化?或者另一种情况:我在类中有一个大函数。如果我