假设我有一个非常简单的函数,我希望编译器能够内联它。但是我可能需要在看到一些无效输入时抛出异常,是否会阻止编译器内联函数?
答案 0 :(得分:10)
编译器可以因任何原因拒绝内联。 gcc列出了它可能not inline a function的原因,但异常抛出不在其中。此外,选项-Winline将导致编译器发出警告,如果它无法内联您标记为内联的函数。你可以尝试一下,看看你是否正在做任何事情来阻止内联。
答案 1 :(得分:6)
编译器内联抛出的函数是完全合理且有效的。
答案 2 :(得分:0)
我刚刚使用MSVC版本19遇到这种情况。在编译x86时,抛出异常的函数不会被内联。如果我用throw
替换exit(1)
或者我为x86-64编译,那么内联就好了。