编译器会忽略我的函数的内联限定符吗?

Rup*_*ari 1 c++ inline

我读到在函数中有多于一行会伪造“内联”,如果是这样,我如何知道我的函数何时被内联,反之亦然:/

inline int foo(int x, int y)
{
   cout<<"foo-boo";
   return (x > y)? x : y;
}
Run Code Online (Sandbox Code Playgroud)

Sat*_*hya 7

请记住,内联只是对编译器的请求,而不是命令。编译器可以忽略内联请求。在以下情况下,编译器可能不会执行内联:

  1. 如果一个函数包含一个循环。(for, while, do-while)
  2. 如果函数包含静态变量。
  3. 如果函数是递归的。
  4. 如果函数返回类型不是 void,并且函数体中不存在 return 语句。
  5. 如果函数包含 switch 或 goto 语句。