我是一名新手程序员。我们的教科书 sumitha arora class 12 ix edition 中有这些行:
The inlining does not work for the following situations:
For functions that return values and are having a loop or switch or goto.
For functions not returning values, if a return statement exists.
如果 1 和 2 为真,那么如何创建内联函数?
附言台词和书上的一模一样,没有改动
最佳答案
我不知道书中提到的编译器是什么。一般来说,这将取决于实际的编译器、可以内联的内容或何时生成函数体。
这些陈述并不像您想象的那样相互排斥。禁止内联的一般条件是函数中的一个分支,除了一个简单的 if 语句。 (1) 中的分支是循环和 goto
。 (2) 中的分支是在 return;
编辑:
它高度依赖于编译器。嵌套的 if
可能有效。但是 switch
语句不同,因为它们通常使用跳转表而不是多个 if
语句来实现。跳转表包含类似于 goto
标签的位置。对于实际的编译器来说,这可能更加困难。因此,做出区分可能是明智的。
关于c++ - 内联函数什么时候不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23669716/