C ++异常会因内联而停止运行吗?

时间:2011-09-21 03:53:25

标签: c++ exception inline

假设我有一个非常简单的函数,我希望编译器能够内联它。但是我可能需要在看到一些无效输入时抛出异常,是否会阻止编译器内联函数?

3 个答案:

答案 0 :(得分:10)

编译器可以因任何原因拒绝内联。 gcc列出了它可能not inline a function的原因,但异常抛出不在其中。此外,选项-Winline将导致编译器发出警告,如果它无法内联您标记为内联的函数。你可以尝试一下,看看你是否正在做任何事情来阻止内联。

答案 1 :(得分:6)

编译器内联抛出的函数是完全合理且有效的。

答案 2 :(得分:0)

我刚刚使用MSVC版本19遇到这种情况。在编译x86时,抛出异常的函数不会被内联。如果我用throw替换exit(1)或者我为x86-64编译,那么内联就好了。