按照 C++ 语言规则,C++ 内联函数是一个函数,对于该函数以下语句之一为真。
该函数的定义中使用了关键字 inline
该函数在类定义内部定义(不仅是声明)
该函数是编译器生成的类成员函数
按照 C++ 语言规则,编译器可以选择是否将调用实际内联到内联函数。C++ 编译器将调用内联到内联函数,除非:
函数过于复杂
已选定 +d 选项
已选定 -g 选项
缺省情况下,编译器可以内联以下代码示例中的函数 f() 和 memf2()。此外,该类具有编译器可以内联的由编译器生成的缺省构造函数和析构函数。使用 +d 时,编译器不会内联 f() 和 C::mf2()(即构造函数和析构函数)。
inline int f() {return 0;} // may be inlined class C { int mf1(); // not inlined unless inline definition comes later int mf2() {return 0;} // may be inlined }; |
指定了调试选项 –g 时,会自动启用该选项。
但指定调试选项 –g0 并不会启用 +d。
+d 选项对使用 -xO4 或 -xO5 时执行的自动内联没有影响。
–g0 和 –g