我读到在一个函数中有多行会伪造"内联",如果是这样我怎么知道我的函数被内联的时候,反之亦然:/
inline int foo(int x, int y)
{
cout<<"foo-boo";
return (x > y)? x : y;
}
答案 0 :(得分:1)
inline
绝不与函数 1 中的行数相关。它只是一个编译器提示,编译器不,无论如何都必须遵循。声明inline
时函数是否真正内联,是实现定义的
从C ++ 14标准草案N3690,§7.1.2:
具有
inline
说明符的函数声明(8.3.5,9.3,11.3) 声明一个内联函数。gzip_lines
说明符表示 实现内联函数体的替换 呼叫点优先于通常的函数调用机制。 在通话时执行此内联替换不需要实现 [...]
(格式化我的。)
有特定于编译器的选项和属性来启用/禁用所有函数的内联,并执行其他相关的操作。查看编译器的文档以获取更多信息。
1 在决定是否内联函数时,编译器可以考虑函数的行数,但这是实现定义的,而不是标准所要求的。
答案 1 :(得分:1)
请记住,内联只是对编译器的请求,而不是命令。编译器可以忽略内联请求。编译器可能不会在以下情况下执行内联: